Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie polecenia LOAD DATA INFILE w procedurze składowanej

Nie, przypuszczam, że nie jest to możliwe ze względów bezpieczeństwa. Możesz jednak generować zapytania „LOAD DATA” dla tabel w bazie danych za pomocą tej sztuczki (zwróć serię zapytań dla każdej tabeli:skróć tabelę przed załadowaniem danych, a następnie wyłącz klucze, następnie załaduj dane, a następnie włącz klucze):

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 uruchomieniu tego zapytania wynikowe wiersze są zapytaniami do przesyłania danych. Używam go przy przenoszeniu pełnej zawartości bazy danych do innej. Oczywiście w tym zapytaniu możesz filtrować potrzebne tabele, używając większej liczby warunków. Mam nadzieję, że to pomoże.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest właściwa składnia instrukcji IF w MySQL?

  2. Wyświetl wszystkie tabele. Opisz podobną funkcjonalność

  3. Jak uzyskać prawdziwy rozmiar bazy danych MySQL?

  4. MySQL:ignorować błędy podczas importowania?

  5. Różnica między =i :=w MySQL