sql >> Databáze >  >> RDS >> Mysql

Použití příkazu LOAD DATA INFILE v uložené proceduře

Ne, z bezpečnostních důvodů to asi není možné. Pomocí tohoto triku však můžete generovat dotazy „NAČTÍT DATA“ pro tabulky v databázi (vraťte sérii dotazů pro každou tabulku:před načtením dat zkrátit tabulku, pak deaktivovat klíče, pak načíst data a poté povolit klíče):

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

Po spuštění tohoto dotazu jsou výsledné řádky dotazy pro přenos dat. Používám to při přesunu plného obsahu databáze do jiné. Samozřejmě v tomto dotazu můžete filtrovat potřebné tabulky pomocí více podmínek. Doufám, že to pomůže.




  1. jak můžeme volat proceduru store v klauzuli where

  2. Jaký je dobrý přístup ke správě připojení db v aplikaci Google Cloud SQL (GAE) Python?

  3. Oracle vložit do tabulky2 a poté odstranit z tabulky1, výjimka, pokud selže

  4. Jak přidat indikátor AD/BC k datu v Oracle