我有一个数据表,其中包含X
个记录。
我使用SqlBulkCopy将这些记录发送到远程数据库。每个记录包含一个大blob,因此传输速度非常慢,因此,我想发送每个只包含10条记录的批量。
我目前所拥有的内容是上传第一条记录,然后以10组为单位上传,但省略了剩余记录。问题是我的循环错了。它应该处理来自0-10
,11-20
等
有什么想法吗?
For Each iRow As DataRow In dtSortedDataTable.Rows
dtToUpload.ImportRow(dtSortedDataTable.Rows(dtSortedDataTable.Rows.IndexOf(iRow)))
If iCurrent Mod 10 = 0 Then
'Call function SqlBulkCopy to upload 10 records existing in the dtToUpload
End If
iCurrent += 1
Next
答案 0 :(得分:2)
这里有几个问题:
假设iCurrent从0开始,为了获得您想要的行为,您需要向iCurrent添加一个:
If (iCurrent + 1) Mod 10 = 0 Then
根据您尝试实施的逻辑,您声明的范围不正确。您想要处理0-9,10-19等
不要忘记在循环后添加批量复制上传或检查iCurrent是否是您正在处理的最后一项:
If (iCurrent + 1) Mod 10 = 0 OrElse (iCurrent = dtSortedDataTable.Rows.Count - 1) Then