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

Dane ładowania MySQL:To polecenie nie jest jeszcze obsługiwane w protokole przygotowanych instrukcji

Nie możesz użyć PREPARE aby uruchomić LOAD DATA INFILE .

Lista instrukcji, które możesz uruchomić za pomocą PREPARE są udokumentowane na tej stronie:https:// /dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html pod nagłówkiem „Składnia SQL dozwolona w przygotowanych wyciągach”. Pamiętaj, że ta lista może być inna we wcześniejszych wersjach MySQL.

Ponieważ nie możesz użyć PREPARE , nie możesz zastosować metody, której używasz, ustawiając zmienną i wykonując dynamiczną instrukcję SQL.

Ale możesz uruchomić LOAD DATA INFILE bez użycia PREPARE . Musisz interpolować nazwę pliku do instrukcji za pomocą podstawiania zmiennej powłoki, a następnie uruchomić ją jako bezpośrednią instrukcję SQL.

Twój plik update.sql może wyglądać tak:

LOAD DATA LOCAL INFILE '%spacename%' INTO TABLE tmp 
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Następnie możesz podstawić zmienną powłoki do pliku i uruchomić wynik w ten sposób:

sed s/%spacename%/$1/ update.sql | 
  mysql -h "localhost" -u "root" "-pmypassword" "mydb"

Innym prostszym sposobem jest użycie mysqlimport , ale wymaga to, aby nazwa pliku wejściowego była taka sama jak nazwa tabeli. Możesz zmienić nazwę pliku wejściowego, aby pasowała do tabeli, do której chcesz załadować (którą nazywasz tmp ) lub utwórz dowiązanie symboliczne:

ln -s $1 /tmp/tmp.list
mysqlimport --local -h "localhost" -u "root" "-pmypassword" "mydb" /tmp/tmp.list
rm -f /tmp/tmp.list

Rozszerzenie ".list" jest ignorowane przez mysqlimport, więc możesz użyć dowolnego rozszerzenia pliku lub żadnego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podłączanie MySQL do Visual Studio C#

  2. Typ kolumny MySQL TIMESTAMP niejawnie zawiera NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

  3. Zapytania JOIN a wiele zapytań

  4. Jak grupować według miesięcy w MySQL

  5. node.js mysql pool beginTransaction &connection