我需要將大量數據插入到SqlServer 2008中。我的項目基於linq-to-sql。是否可以使用linq-to-sql插入大量數據?
我用100.000行處理csv文件。每行都映射到Order
對象。 Order
還包含Category
和Code
對象的集合。我需要將每一行映射到對象以驗證它。
然後我需要將所有這些對象插入到數據庫中。
List<Order> orders = Import("test.csv");
db.Orders.InsertAllOnSubmit(orders);
db.SubmitChanges();
OR
foreach(Order order in orders)
db.Orders.InsertOnSubmit(order);
db.SubmitChanges();
兩種方式都很慢。有什麼解決方法嗎?我可以使用其他方法而不是l2sql來完成這項任務。
我讀了關於SqlBulkCopy類 - 它會處理插入子實體以及?
如果你打算使用這種解決方案,你可以試着按聚集索引進行排序。如果您沒有插入每批可能會重新排序所有以前的行。或者它可能不是,但這是你需要注意的事情。 – 2010-07-14 15:00:39
@Mike兩頁分裂與熱點...一如既往 - 衡量,衡量,衡量。 – 2010-07-14 16:43:42
我接受了這個答案。然而EntityFramework的速度要快幾倍。另一方面,我應該使用SqlBulkCopy,但它不處理子實體。 – jlp 2010-08-04 08:48:44