我在VB中编写了一个程序(尽管我对C#也很满意,所以请用任何一种语言回答)用于将大量数据插入到我的SQL Server DB中的表中。
我计划这样做的方式是:
SqlDataAdapter.FillSchema
方法从数据库中获取表格的模式。SqlBulkCopy
(.WriteToServer(dtToCopy.CreateDataReader)
)加载数据我以前做了很多次,事实证明它很有效率。我的问题是我写的表有一个自动递增的主键列RowNum
。
现在我知道在获取架构并获取RowNum
的最新值后我可以重新查询我的表,只需将值自己写入我的DataTable中的相应列,但我担心的是表格可能会在我的查询时间和写作时间之间发生变化,在这种情况下,我可能会产生不理想的结果。
我看过有关MissingSchemaAction
>的帖子AddWithKey
,但我不确定如何在我的案例中实现它?
我是否只需删除主键并从DataTable中删除RowNum
列?
如果是这样,我在什么时候设置该属性?它似乎不是DataTable的属性,我没有看到在SqlBulkCopy中添加它的位置。
感谢!!!
答案 0 :(得分:1)
经过大量的搜索,我自己找到了解决方案。
基本上,我必须:
PrimaryKey
属性设置为Nothing
RowNum
列ColumnMappings
使用SqlBulkCopy
,以便映射每个其他列,并且遗漏身份然后,由于它是主键并在DB中设置为自动增量,因此在加载时会自动为其分配正确的值。
希望这有助于其他人!!!