9

我有一个包含记录的数据表。我正在使用 SqlBulkCopy 将记录插入到 Sql 表中。它工作正常。下一次获取具有相同记录且更改值很少的数据表时,SqlBulkCopy 正在插入另一组记录而不更新以前的详细信息。如何我可以使用 SqlBulkCopy 更新 Sql 表吗?请帮忙。

谢谢,维克斯

4

4 回答 4

16

SqlBulkCopy 仅用于插入记录,而不是按照此处的说明更新它们。您需要使用不同的技术来进行批量更新。

例如,您可以将SqlBulkCopy 复制到临时表中,然后运行一些SQL 以从那里更新到主表。

于 2009-11-09T11:52:29.840 回答
3

截断表并执行 Bulkcopy。

于 2009-11-09T13:28:23.157 回答
3

避免截断表并创建一个新的临时表,顺便说一句,这会消耗更多的空间和内存。

我使用 INSTEAD OF INSERT 创建了一个触发器并在 MERGE 语句中使用。

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

这是我的两分钱。

于 2013-11-06T01:00:25.120 回答
-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);
于 2016-03-11T18:29:53.893 回答