使用SQLBulkCopy插入/更新数据库

时间:2009-11-09 11:36:40

标签: asp.net sqlbulkcopy

我有一个带有记录的数据表。我正在使用SqlBulkCopy将记录插入到Sql表中。它运行正常。下一次获取具有相同记录且几乎没有更改值的数据表时SqlBulkCopy正在插入另一组记录而不更新前一个details.How如何使用SqlBulkCopy更新Sql表?请帮忙。

谢谢, VIX

4 个答案:

答案 0 :(得分:15)

SqlBulkCopy仅用于插入记录,而不是按照here所述更新它们。您需要使用其他技术来进行批量更新。

e.g。您可以将SqlBulkCopy转换为临时表,然后运行一些SQL从那里更新到主表。

答案 1 :(得分:3)

截断表格并执行Bulkcopy。

答案 2 :(得分:2)

避免使用Truncate表并创建一个新的临时表,BTW会占用更多的空间和内存。

我使用INSTEAD OF INSERT创建了一个Trigger,并在MERGE语句中使用。

但是不要忘记在SqlBulkCopy中添加参数SqlBulkCopyOptions.FireTriggers。

这是我的两分钱。

答案 3 :(得分:-1)

如AdaTheDev所述,SqlBulkCopy只能插入,但是有一个替代库允许执行Upsert操作。

免责声明:我是该项目的所有者Bulk Operations

批量操作库有一个方法" BulkMerge "根据指定的键插入或更新行。

var bulk = new BulkOperation(connection);

bulk.ColumnMappings.Add("ID", true);
bulk.ColumnMappings.Add("Column1");
bulk.ColumnMappings.Add("Column2");
bulk.ColumnMappings.Add("Column3");

bulk.BulkMerge(dt);