2009-05-21 24 views

Trả lời

-1

Bạn không thể theo như tôi biết. Bạn sẽ cần một vòng lặp.

3

Bạn có thể thực hiện chèn hàng loạt với câu lệnh INSERT, nhưng truy vấn của bạn không được lớn hơn (nhỏ hơn một chút) max_allowed_packet.

Đối với 100 nghìn hàng, tùy thuộc vào kích thước của các hàng, có thể bạn sẽ vượt quá mức này.

Một cách là chia nhỏ thành nhiều phần. Đây có lẽ là một ý tưởng hay.

Hoặc bạn có thể sử dụng LOAD DATA INFILE (hoặc LOAD DATA LOCAL INFILE) để tải từ tệp được phân tách bằng tab (hoặc phân cách khác). Xem tài liệu để biết chi tiết.

LOẠI DỮ LIỆU không phải tuân theo giới hạn max_allowed_packet.

7
insert into $table values (1, a, b), (2, c, d), (3, e, f); 

Điều đó sẽ thực hiện chèn 3 hàng. Tiếp tục khi cần thiết để tiếp cận 100.000. Tôi làm khối ~ 1.000 theo cách đó khi thực hiện công việc ETL.

Nếu dữ liệu của bạn tĩnh trong một tệp, hãy chuyển đổi và sử dụng tải dữ liệu infile sẽ là phương pháp tốt nhất, nhưng tôi đoán bạn đang hỏi điều này vì bạn làm điều tương tự.

Cũng lưu ý những gì người khác đã nói về kích thước max_allowed_packet giới hạn độ dài truy vấn của bạn.

0

Hãy thử sử dụng LoadFile() hoặc Chuyển đổi dữ liệu yor thành tệp XML và sau đó sử dụng chức năng tải và trích xuất() để tải dữ liệu vào cơ sở dữ liệu MySQL.

Đây là một truy vấn và lựa chọn nhanh nhất,

Thậm chí tôi đang làm cùng, tôi đã có file nếu 1,5 GB xung quanh hàng triệu hàng. Tôi đã sử dụng cả hai tùy chọn trong trường hợp của tôi.

Các vấn đề liên quan