2011-02-03 41 views
5

Trước đây tôi đã sử dụng lớp SQLBulkCopy để tải dữ liệu vào một db SQL Server db. Kết quả rất tốt, và làm việc chính xác như tôi dự định.Cách chèn số lượng lớn vào MySQL bằng C#

Bây giờ, tôi đang cố gắng sử dụng tác vụ tập lệnh trong SSIS để tải hàng loạt dữ liệu vào cơ sở dữ liệu MySQL (5.5.8) bằng cách sử dụng kết nối ODBC hoặc ADO.NET (khuyên dùng?).

Các cột trong tập dữ liệu của tôi tương ứng với các cột của bảng MySQL. Cách tốt nhất để thực hiện chèn hàng loạt tập dữ liệu vào cơ sở dữ liệu MySQL là gì?

+2

Nếu dữ liệu của bạn được trong một định dạng văn bản, bạn không cần phải viết một chương trình, chỉ cần viết một 'LOAD DATA Truy vấn INFILE' và MySQL sẽ tự tải tệp. –

+0

Dan, cảm ơn đề xuất Tôi sẽ lên lịch SSIS để tải một loạt tệp văn bản và cần kiểm tra một số nội dung tệp trước khi quyết định chèn dữ liệu. Đây là lý do tại sao tôi làm điều này theo chương trình. – yamn2

Trả lời

13

Bạn có thể sử dụng MySqlBulkLoader vận chuyển với Connector MySQL cho NET:

var bl = new MySqlBulkLoader(connection); 
bl.TableName = "mytable"; 
bl.FieldTerminator = ","; 
bl.LineTerminator = "\r\n"; 
bl.FileName = "myfileformytable.csv"; 
bl.NumberOfLinesToSkip = 1; 
var inserted = bl.Load(); 
Debug.Print(inserted + " rows inserted."); 
+0

Tôi đã thử cùng một mã nhưng nó không hoạt động chèn luôn luôn bằng không. – rahularyansharma

+0

@rahularyansharma đảm bảo rằng việc cài đặt MySQL của bạn hỗ trợ LOAD_DATA_INFILE (http://dev.mysql.com/doc/refman/5.1/en/connector-net-programming-bulk-loader.html) vì MySQLBulkLoader chỉ là một trình bao bọc xung quanh nó . –

+0

khi tôi chạy lệnh này từ dấu nhắc lệnh hoạt động của nó! – rahularyansharma

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