c# - 多列的sql合并语句

标签 c# sql sql-server excel

我目前正在用 C# 开发一个程序,它需要一个巨大的 excel 表(~14,300 行,90 列)并需要将其插入数据库 (SQL server 2014)。用户可以通过数据库搜索不同的产品,最终为客户报价。

为了插入,我成功地使用 SQLBulkcopy 将 excel 行插入到暂存表中。问题是,我想使用合并语句合并我的暂存表和真实表,因为同一个文件可能会多次上传,但随着时间的推移会有非常细微的变化。我发现的所有 sql 合并示例看起来都像这样:

MERGE INTO maintable as Target
USING stagingtable as Source
ON Target.columnA = Source.columnA
WHEN MATCHED THEN 
UPDATE SET Target.Name = Source.Name
WHEN NOT MATCHED THEN
INSERT (columnA, Name)
VALUES (Source.columnA, source.Name)

该语句可以工作,但问题是,我的 excel 文件有 90 列。有没有办法一次更新整行,或者我必须更新一行的 90 列中的每一列?

最佳答案

你必须一一列出所有 90 列,没有更新整行。转到 SSMS,选择表,右键单击,脚本表为 -> 更新为,这将为您提供脚本中所有列的列表,您可以修改或复制/粘贴到合并脚本。

关于c# - 多列的sql合并语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25998353/

相关文章:

sql - 如何在SQL Server中选择每个id组的前2个

c# - 单击按钮后如何在数据网格中选中复选框的情况下传输数据? C# 和 SQL Server

asp.net - MSBuild:自动收集数据库迁移脚本?

sql-server - 如何删除 Azure MSSQL 审核日志

c# - 错误 : 'Subscript indices must either be real positive integers or logicals' when using Matlab . NET 生成器

c# - Azure 函数-Microsoft.AspNetCore.Server.Kestrel.Core : Request body too large

sql - 按别名分组

sql - SQL Server 中的覆盖索引和覆盖查询是什么?

c# - 如何将异常标记为已记录(并且只记录一次)?

c# - 在 C# 中使用小数进行转换