Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando o comando LOAD DATA INFILE em um procedimento armazenado


Não, não é possível devido a razões de segurança, suponho. No entanto, você pode gerar consultas "LOAD DATA" para tabelas em um banco de dados usando este truque (retorne uma série de consultas para cada tabela:truncar tabela antes de carregar dados, desabilitar chaves, carregar dados e habilitar chaves):
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';

Depois de executar esta consulta, as linhas resultantes são consultas para transferência de dados. Eu o uso ao mover um conteúdo de banco de dados completo para outro. Claro, nessa consulta você pode filtrar suas tabelas necessárias usando mais condições. Espero que ajude.