【发布时间】:2014-09-18 12:24:46
【问题描述】:
我正在尝试使用 Linq to Sql 对我的 sql 表进行批量插入。 我还在学习linq,所以请温柔。
代码不是问题,因为一切都很好导入,但过程非常缓慢:每条记录需要 4 秒,而我有大约 15k 条记录。
问题的主要核心(我认为)是,在我想添加一条记录之前,我首先要检查这条记录是否已经存在,以确保我没有重复。 所以这意味着我要搜索我已经存在的 15k 条记录的数据库,如果找到记录,则发送一个真/假响应。
Dim expr = From spare In db.tblSpareParts Where spare.SparePartDeleted = False Select spare
For Each part In expr
If part.SparePartYnumber = ynumber Then
Return True
End If
Next
Return False
主代码,我们在其中循环访问文档。
For Each Me.dr In dt.Rows
If dr.Item(0).ToString <> "" Then
blnfoundit = db.getynumberinfo(dr.Item(0).ToString)
If blnfoundit Then
db.setSparePart("Toevoegen", dr.Item(0).ToString, dr.Item(1).ToString, "", "", "Mat Ref: " & dr.Item(2).ToString & " - Vendor : " & dr.Item(5).ToString, 0, 0, CInt(IIf(dr.Item(12).ToString = "", 0, dr.Item(12).ToString)))
End If
End If
Next
最后一段代码将所有内容都放在SQL中:
Dim sqlimport As New tblSparePart
With sqlimport
.SparePartCurrentStock = currentstock
.SparePartDeleted = False
.SparePartDescription = description
.SparePartLastModified = DateTime.Now()
.SparePartLocation = location
.SparePartMinimumStock = minimumstock
.SparePartPrice = price
.SparePartRemarks = remarks
.SparePartType = type
.SparePartUserName = General.username
.SparePartYnumber = ynumber
End With
db.tblSpareParts.InsertOnSubmit(sqlimport)
db.SubmitChanges()
关于如何加快这个过程的任何想法?
顺便说一句,我确实在网上搜索过类似的东西,并找到了一些关于 SqlBulkCopy 的东西,但我不知道如何使用它,以及它是否有用。 I have a Tags Table. How to Bulk Insert using LINQ?
提前感谢您的回复,
格特
【问题讨论】:
标签: sql vb.net linq bulkinsert