2010-06-11 35 views
7

Tôi có một DataTable trong bộ nhớ mà tôi cần phải đổ thẳng vào một bảng tạm thời SQL Server.Cách nhanh nhất để có được một DataTable vào SQL Server là gì?

Sau khi dữ liệu được chèn vào, tôi chuyển đổi nó một chút, và sau đó chèn một tập con của những bản ghi đó vào bảng vĩnh viễn.

Phần tốn nhiều thời gian nhất của thao tác này là lấy dữ liệu vào bảng tạm thời.

Bây giờ, tôi phải sử dụng bảng tạm thời, vì nhiều bản sao của ứng dụng này đang chạy cùng một lúc và tôi cần một lớp cách ly cho đến khi chèn thực tế vào bảng vĩnh viễn.

Cách nhanh nhất để thực hiện chèn hàng loạt từ Bảng dữ liệu C# vào bảng SQL Temp là gì?

Tôi không thể sử dụng bất kỳ công cụ của bên thứ 3 nào cho điều này vì tôi đang chuyển dữ liệu trong bộ nhớ.

phương pháp hiện tại của tôi là tạo ra một SqlCommand tham số:

INSERT INTO #table (col1, col2, ... col200) VALUES (@col1, @col2, ... @col200) 

và sau đó cho mỗi hàng, rõ ràng và thiết lập các thông số và thực thi.

Phải có cách hiệu quả hơn. Tôi có thể đọc và ghi các bản ghi trên đĩa chỉ trong vài giây ...

+0

Có bao nhiêu hàng trong tập dữ liệu? Mất bao lâu để chèn? – shahkalpesh

+0

200000 hàng, tối đa 45 phút. –

Trả lời

9

Bạn nên sử dụng SqlBulkCopy class.

+0

Tuyệt vời, nhưng bạn có biết nó có thể được sử dụng trên các bảng tạm thời không? –

+0

@ John Gietzen - cách tôi thường làm, là tải vào một bảng "thực" - sau đó thả nó sau khi bạn đã hoàn tất. – AdaTheDev

+0

Vâng, đó là một số khả thi, nhưng một lần nữa có khoảng 10 bản sao của ứng dụng này có thể chạy đồng thời. Bạn có biết nếu một bản sao hàng loạt có thể là một phần của giao dịch không? –

9

SqlBulkCopy sẽ nhận dữ liệu rất nhanh.

I blogged not that long ago cách tối đa hóa hiệu suất. Một số số liệu thống kê và ví dụ trong đó. Tôi so sánh 2 kỹ thuật, 1 bằng cách sử dụng SqlDataAdapter và 1 sử dụng SqlBulkCopy - dòng dưới cùng là để chèn số lượng lớn 100K bản ghi, cách tiếp cận dữ liệu mất ~ 25 giây so với chỉ 0,8 s cho SqlBulkCopy.

+0

+1, nhưng tôi cho phép chấp nhận SLaks vì anh ấy là tóc nhanh hơn. Cảm ơn các liên kết. –

+0

Anh ấy nhanh và chính xác, giống như viên đạn bắn tỉa. –

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