Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation de la commande LOAD DATA INFILE dans une procédure stockée

Non, ce n'est pas possible pour des raisons de sécurité, je suppose. Cependant, vous pouvez générer des requêtes "LOAD DATA" pour les tables d'une base de données en utilisant cette astuce (renvoyer une série de requêtes pour chaque table :tronquer la table avant de charger les données, puis désactiver les clés, puis charger les données, puis activer les clés) :

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

Après avoir exécuté cette requête, les lignes résultantes sont des requêtes de transfert de données. Je l'utilise lors du déplacement d'un contenu complet de base de données vers un autre. Bien sûr, dans cette requête, vous pouvez filtrer vos tables nécessaires en utilisant plus de conditions. J'espère que ça aide.