【发布时间】:2019-11-16 17:58:07
【问题描述】:
我正在使用下面的代码将数据表中的数据插入 SQL Server。我的问题是是否有任何方法可以合并行。如果 id 不存在插入,否则更新。
using (SqlTransaction transaction = connection.BeginTransaction())
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default, transaction))
{
try
{
bulkCopy.DestinationTableName = TableName;
bulkCopy.WriteToServer(dt);
transaction.Commit();
}
catch
{
transaction.Rollback();
return false;
}
}
【问题讨论】:
-
批量复制到临时表,根据连接更新到临时表,插入不存在的地方,然后截断临时表。
-
不,您不能使用
BulkCopy进行更新。您可以做的是批量复制到临时表中,然后运行存储过程并使用Merge打乱到最终表中。 -
考虑在您的 DataTable 值中使用表值参数,并在
MERGE语句中使用它。 -
谢谢丹。有没有办法在没有我的 bulkCopy 数据表的情况下创建一个新的 TempTable?不定义列名?
-
TVP 实际上是一个临时表,但它需要定义一个表类型。我会详细回答。
标签: c# sql-server