Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo del comando LOAD DATA INFILE in una procedura memorizzata

No, non è possibile per motivi di sicurezza, suppongo. Tuttavia, puoi generare query "LOAD DATA" per le tabelle in un database usando questo trucco (restituisci una serie di query per ogni tabella:tronca la tabella prima di caricare i dati, quindi disabilita le chiavi, quindi carica i dati, quindi abilita le chiavi):

SELECT CONCAT('TRUNCATE TABLE ',table_name,'; ALTER TABLE ',table_name,' DISABLE KEYS;    LOAD DATA INFILE "',table_name,'.txt" INTO TABLE ',table_name,' FIELDS TERMINATED BY "\\t" LINES TERMINATED BY "\\n"; ALTER TABLE ',table_name,' ENABLE KEYS; ')
FROM information_schema.`TABLES` as infs
WHERE infs.`TABLE_SCHEMA`=DATABASE()
AND infs.`TABLE_TYPE`!='VIEW';

Dopo aver eseguito questa query, le righe risultanti sono query per il trasferimento di dati. Lo uso quando sposto il contenuto di un database completo in un altro. Ovviamente, in quella query puoi filtrare le tabelle necessarie utilizzando più condizioni. Spero che aiuti.