Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden des Befehls LOAD DATA INFILE in einer gespeicherten Prozedur

Nein, das ist aus Sicherheitsgründen nicht möglich, nehme ich an. Sie können jedoch mit diesem Trick "LOAD DATA"-Abfragen für Tabellen in einer Datenbank generieren (geben Sie eine Reihe von Abfragen für jede Tabelle zurück:Tabelle vor dem Laden von Daten abschneiden, dann Schlüssel deaktivieren, dann Daten laden, dann Schlüssel aktivieren):

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

Nachdem Sie diese Abfrage ausgeführt haben, sind die resultierenden Zeilen Abfragen zum Übertragen von Daten. Ich verwende es, wenn ich einen vollständigen Datenbankinhalt in einen anderen verschiebe. Natürlich können Sie in dieser Abfrage Ihre benötigten Tabellen anhand weiterer Bedingungen filtern. Hoffe es hilft.