Chèn hàng loạt trong MySQL là khi bạn cần chèn nhiều bản ghi vào một bảng cùng một lúc. Nó có thể được sử dụng để nhanh chóng tạo dữ liệu để thử nghiệm. Thật là mệt mỏi khi phải viết lại câu lệnh insert cho mọi hàng. Đây là cách bạn có thể chèn hàng loạt vào MySQL.
Chèn hàng loạt trong MySQL
Cú pháp
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( a1, a2,...aN ),( b1, b2,...bN ),..;
a1, a2, a3, .. - giá trị cho trường 1
b1, b2, b3, .. - giá trị cho trường 2
c1, c2, c3, .. - giá trị cho trường 3
…
Ví dụ
Đối với bảng table_name với các cột a, b, c
mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3); +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Như bạn có thể thấy, chèn hàng loạt trong MySQL cho phép các hàng / cột trùng lặp. Nó có thể gây ra các khóa chính trùng lặp. Đây là cách bạn có thể tránh nó.
Chèn hàng loạt trong MySQL mà không có bản sao
Chúng tôi sử dụng điều khoản ON DUPLICATE KEY. Nó phát hiện các giá trị trùng lặp của khóa chính. Chúng tôi cũng thêm điều khoản CẬP NHẬT để cập nhật giá trị trùng lặp.
Cú pháp
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( a1, a2,...aN ),( b1, b2,...bN ),.. ON DUPLICATE KEY UPDATE primary_key_field=<expression> ;
a1, a2, a3, .. - giá trị cho trường 1
b1, b2, b3, .. - giá trị cho trường 2
c1, c2, c3, .. - giá trị cho trường 3
…
Ví dụ
Đối với bảng table_name với các cột a, b, c và c là khóa chính
mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3) ON DUPLICATE KEY UPDATE c=c+1; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 4 | +------+------+------+
Bạn cũng có thể cập nhật giá trị dựa trên các cột khác