Tôi có 1-nhiều số lượng hồ sơ cần phải được nhập vào một bảng. Cách tốt nhất để làm điều này trong một truy vấn là gì? Tôi có nên tạo một vòng lặp và chèn một bản ghi cho mỗi lần lặp không? đây có phải là cách tốt hơn không?
Tôi có 1-nhiều số lượng hồ sơ cần phải được nhập vào một bảng. Cách tốt nhất để làm điều này trong một truy vấn là gì? Tôi có nên tạo một vòng lặp và chèn một bản ghi cho mỗi lần lặp không? đây có phải là cách tốt hơn không?
Câu trả lời:
Các câu lệnh INSERT sử dụng cú pháp GIÁ TRỊ có thể chèn nhiều hàng. Để làm điều này, bao gồm nhiều danh sách các giá trị cột, mỗi giá trị được đặt trong dấu ngoặc đơn và được phân tách bằng dấu phẩy. Thí dụ:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
max_allowed_packet
Hầu hết thời gian, bạn không làm việc trong máy khách MySQL và bạn nên chèn hàng loạt với nhau bằng API thích hợp.
Ví dụ: trong JDBC:
connection con.setAutoCommit(false);
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();
prepStmt.setString(1,mgrnum2);
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();
int [] numUpdates=prepStmt.executeBatch();
Insert into table(col1,col2) select col1,col2 from table_2;
Vui lòng tham khảo tài liệu MySQL về Tuyên bố INSERT
insert into select from
hiệu suất như thế nào ? nó có nhanh như chèn số lượng lớn không?
Tải truy vấn infile dữ liệu là tùy chọn tốt hơn nhiều nhưng một số máy chủ như godaddy hạn chế tùy chọn này trên lưu trữ chia sẻ, do đó, chỉ còn hai tùy chọn sau đó là một bản ghi chèn trên mỗi lần lặp hoặc chèn hàng loạt, nhưng chèn hàng loạt có giới hạn ký tự nếu truy vấn của bạn vượt quá điều này số lượng ký tự được đặt trong mysql thì truy vấn của bạn sẽ bị sập
LOAD DATA LOCAL INFILE '/users/name/txt.file'
mysql cho phép bạn chèn nhiều hàng cùng một lúc INSERT thủ công
INSERT
hỗ trợ này nguyên bản !