我有一个带有记录的数据表。我正在使用SqlBulkCopy将记录插入到Sql表中。它运行正常。下一次获取具有相同记录且几乎没有更改值的数据表时SqlBulkCopy正在插入另一组记录而不更新前一个details.How如何使用SqlBulkCopy更新Sql表?请帮忙。
谢谢, VIX
答案 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);