2009-08-15 33 views
12

Tôi có một loạt dữ liệu mà tôi muốn chèn và tôi đã quyết định sử dụng chèn số lượng lớn cho mysql. chènmysql chèn số lượng lớn - tôi có thể sử dụng mệnh đề bỏ qua không? có giới hạn không. của hồ sơ cho chèn số lượng lớn?

vào bạn bè (người yêu cầu, bạn thân) giá trị (value1, value2), (value2, value1), (value3, VALUE4), (VALUE4, value3), ...

tôi muốn biết như sau:

1) tôi có thể sử dụng tính năng bỏ qua không? ví dụ

chèn bỏ qua vào bạn bè (người yêu cầu, bạn thân) giá trị (value1, value2), (value2, value1), (value3, VALUE4), (VALUE4, value3), ...

điều gì xảy ra nếu tôi có trùng lặp? nó sẽ a) không chèn tất cả mọi thứ? b) chèn các bản ghi trước khi bản ghi trùng lặp và DỪNG xử lý dữ liệu sau đó? c) bỏ qua bản sao và tiếp tục với phần còn lại?

2) có giới hạn đối với số không. hồ sơ tôi có thể sử dụng cho một số lượng lớn chèn như thế này?

Cảm ơn bạn.

Trả lời

19

Có, bạn có thể sử dụng từ khóa "bỏ qua" và chỉ đơn giản là bỏ qua các lỗi trùng lặp. Nó sẽ chèn mỗi hàng mà nó có thể, bỏ qua những hàng có thể dẫn đến trùng lặp (và nó sẽ không dừng xử lý dữ liệu.) Nếu bạn làm điều gì đó như thế này (nơi chúng tôi giả định cột đầu tiên là khóa chính):

chèn bỏ qua các giá trị c (1,1), (2,2), (3,3), (3,5), (4,5);

Điều đó có nghĩa là (3,3) sẽ được chèn và (3,5) sẽ không được. Tất cả mọi thứ nhưng (3,5) sẽ được chèn (giả sử một bàn mới.)

Có thể không có giới hạn khó, nhưng bạn có thể muốn thử nghiệm để xem nơi bạn nên vẽ đường dựa trên nhu cầu của bạn.

Chỉnh sửa: Có vẻ như MySQL có giới hạn cấu hình về kích thước truy vấn SQL, mặc định là 1MB. Thông tin thêm: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_query_cache_limit.

6

Cũng có giới hạn 50.000 hàng mà truy vấn INSERT có thể có.

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