Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Dữ liệu tải MySQL:Lệnh này chưa được hỗ trợ trong giao thức câu lệnh đã chuẩn bị

Bạn không thể sử dụng PREPARE để chạy LOAD DATA INFILE .

Danh sách các câu lệnh mà bạn có thể chạy với PREPARE được ghi lại trong trang này: https:/ /dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html dưới tiêu đề phụ "Cú pháp SQL được phép trong các câu lệnh soạn sẵn". Lưu ý rằng danh sách này có thể khác trong các phiên bản MySQL trước đó.

Vì bạn không thể sử dụng PREPARE , bạn không thể thực hiện phương pháp bạn đang sử dụng bằng cách đặt một biến và tạo một câu lệnh SQL động.

Nhưng bạn có thể chạy LOAD DATA INFILE mà không cần sử dụng PREPARE . Bạn phải nội suy tên tệp vào câu lệnh bằng cách sử dụng thay thế biến shell và sau đó chạy nó như một câu lệnh SQL trực tiếp.

Tệp update.sql của bạn có thể trông giống như sau:

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

Sau đó, bạn có thể thay thế biến shell của mình vào tệp và chạy kết quả theo cách này:

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

Một cách khác đơn giản hơn là sử dụng mysqlimport , ngoại trừ điều này yêu cầu tên tệp đầu vào phải giống với tên bảng của bạn. Bạn có thể đổi tên tệp đầu vào của mình để phù hợp với bảng bạn muốn tải vào (cái mà bạn gọi là tmp ), hoặc nếu không hãy tạo một liên kết tượng trưng:

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

Phần mở rộng ".list" bị mysqlimport bỏ qua, vì vậy bạn có thể sử dụng bất kỳ phần mở rộng tệp nào hoặc không có.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django models.py Thông tư Khóa ngoại

  2. Loại bỏ MySQL Split-Brain trong Cơ sở dữ liệu đa đám mây

  3. Có bao nhiêu truy vấn là quá nhiều?

  4. Sử dụng các hàm tổng hợp (SUM, AVG, MAX, MIN, COUNT, DISTINCT) trong MySQL

  5. Cách trừ các đặc quyền trong MySQL