【发布时间】:2016-08-21 06:29:51
【问题描述】:
我遇到了一个问题,希望能在这里解决。我在 DataSet 中有 3 个不同的表,我想将它插入到数据库表中。
我知道我可以使用SqlBulkCopy 来做到这一点,但有一个问题,那就是我想检查数据库中是否已经存在数据,然后我希望它得到更新而不是插入。
如果数据库表中不存在数据,我想插入它。对此的任何帮助将不胜感激。
我知道我可以遍历每条记录,然后触发一个过程,如果它存在 den 更新或插入,它将检查它的存在。但是数据量很大,遍历每条记录是一个耗时的过程,我不想使用这种方法。
问候
【问题讨论】:
-
你不能(1)在一次运行中将它批量插入到 SQL Server 的暂存表中,然后 (2)数据库端使用服务器上的 T-SQL 代码从临时表更新您的实际数据表,这是“如果不存在则插入”逻辑?这比在本地迭代大型数据集并仅插入一些行要快得多....
-
我没有权限在数据库中创建新表。
-
在 .NET 中运行读取和执行命令可能效率低下,原因有很多。您可以根据记录的存在生成检查和插入/更新等 SQL 语句。但这会导致可能难以操作的 hude 文本文件。您可以使用简单的 c# 应用程序获取 Id,您可以生成适当的 Sql 命令/语句。另一种选择可能是尝试插入所有记录并侦听主键异常以稍后更新它们。
标签: c# sql-server sqlbulkcopy