phải là có thể để tăng rất nhiều loại hoạt động này. Để biến hoạt động này hữu ích (tôi có nghĩa là nhanh chóng và khá an toàn), bạn có thể sử dụng CE DataAdapter.
By mẫu, không chăm sóc về các phím, các bước được liệt kê dưới đây có thể giúp u:
- Hãy chắc chắn rằng Sorce và mục tiêu bảng có cùng cấu trúc lĩnh vực;
- Sao chép một datatable ảo với một datatable từ cơ sở dữ liệu nguồn (lựa chọn của bạn);
- Tạo lệnh CE có tên bảng là lệnh văn bản (BảngDirect as commandtype);
- Tạo một bộ dữ liệu CE từ lệnh CE;
- Tạo trình commandbuilder CE từ dữ liệu CE;
- Chuyển lệnh Chèn từ trình tạo lệnh CE tới CE dataadapter;
Copy "n" hàng loạt từ DataTable nguồn của bạn với mục tiêu DataTable (clone), làm một cái gì đó như thế này:
'... previous codes
For Each currentRow In sourceTable.Rows
'u can do RaiseEvent Processing(currentRow, totalRows) here with DoEvents
If targetTable.Rows.Count < 100 Then
targetTable.InportRow(currentRow)
targetTable.Rows(targetTable.Rows.Count - 1).SetAdded
Else
'...Here you wll call the CE DataAdapter's Update method (da.Update(targetTable))
'...and then be sure you clone the targetTable again, erasing all previous rows.
'...Do a clone again, don't do just a "clear" in the Rows collection.
'...If u have an Autoincrement it will break all Foreign Keys.
End If
Next
'... next codes
Với cách này u có thể cập nhật một số hàng không có nhiều thời gian .
Tôi đã sử dụng một số ứng dụng bằng phương pháp này và tốc độ trung bình khoảng 1500 hàng mỗi giây trong bảng có 5 trường NTEXT (chậm) và 800000 hàng.
Tất nhiên, tất cả phụ thuộc vào cấu trúc bảng của bạn. IMAGE và NTEXT đều là các kiểu dữ liệu chậm.
P.S .: Như tôi đã nói, phương pháp này không quan tâm quá nhiều về khóa, vì vậy hãy cẩn thận.
Nguồn
2010-09-05 18:53:00
Thú vị, cảm ơn :) – leppie
Phương pháp này không hỗ trợ các loại cột Identity và rowversion –
Wow, đang vật lộn với Chèn và nhận 20-30 hàng một giây, tôi chắc chắn điều này chỉ làm tất cả 35.774 hàng trong chưa đầy 1 thứ hai (tất cả dữ liệu của tôi nằm trong một mảng trong bộ nhớ) nên không có cổ chai nào từ nguồn. – Matt