sql >> Base de Datos >  >> RDS >> Mysql

Uso del comando LOAD DATA INFILE en un procedimiento almacenado

No, no es posible por razones de seguridad, supongo. Sin embargo, puede generar consultas de "CARGAR DATOS" para tablas en una base de datos usando este truco (devuelva una serie de consultas para cada tabla:trunque la tabla antes de cargar datos, luego deshabilite claves, luego cargue datos, luego habilite claves):

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';

Después de ejecutar esta consulta, las filas resultantes son consultas para transferir datos. Lo uso cuando muevo el contenido de una base de datos completa a otra. Por supuesto, en esa consulta puede filtrar las tablas necesarias utilizando más condiciones. Espero que ayude.