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

Brug af kommandoen LOAD DATA INFILE i en lagret procedure

Nej, det er ikke muligt af sikkerhedsmæssige årsager, formoder jeg. Du kan dog generere "LOAD DATA"-forespørgsler for tabeller i en database ved hjælp af dette trick (retur en række forespørgsler for hver tabel:afkort tabel før indlæsning af data, deaktiver derefter nøgler, indlæs derefter data, og aktiver derefter nøgler):

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

Når du har kørt denne forespørgsel, er de resulterede rækker forespørgsler til overførsel af data. Jeg bruger det, når jeg flytter et komplet databaseindhold til et andet. Selvfølgelig kan du i den forespørgsel filtrere dine nødvendige tabeller ved at bruge flere betingelser. Håber det hjælper.




  1. Sådan henter du tabellisten i databasen i Laravel 5.1

  2. MySQL langsom forespørgselslog logføring af hurtige forespørgsler

  3. ODP.Net - OracleDataReader.Read meget langsomt

  4. Generering af XML-fil fra SQL Server 2008