批量更改SQL Server数据库中特定列的所有条目

时间:2017-02-22 16:54:38

标签: sql-server bulkinsert bulkupdate

问题:我尝试将带有数千/数百万行的.csv文件插入到带有bulk insert查询的SQL Server表中。现在我想更新具有批量更新的表格,其中特定列会发生变化,例如价格发生变化。我怎样才能做到这一点?而且:我想在插入表格时忽略约束

BULK INSERT Table
FROM 'D:\test.csv'
WITH
    (FIELDTERMINATOR = ',',
     ROWTERMINATOR = '\n')
GO

现在例如表格包含价格列,当我第二次更新文件时,只有那行价格不同的行更新

2 个答案:

答案 0 :(得分:3)

在两个(或更多)步骤中执行此操作。

插入原始数据(缺陷和所有),然后运行单独的更新语句,使其看起来如您所愿。

对于大型或繁忙的桌子,或者为了使新数据保持分离直到准备就绪,您可能还需要首先批量插入到单独的保持表中,按摩并清理那里的数据,然后从保持中迁移表到决赛桌。

或者,您可以编写客户端程序以在批量插入之前预清理数据,或者您可以使用Sql Server Integration Services(SSIS)之类的工具来处理导入。 SSIS有很多很好的功能来处理这类事情。

您无法做的是对批量插入代码进行简单或快速的调整。它完成它的功能,仅此而已。

答案 1 :(得分:1)

您不能只是在上一次上传之前批量上传一个文件,而只记录差异。您要么完全刷新数据(即:覆盖的完整加载),将完整的CSV上传到临时表并使用SQL代码比较这两个表,或者您可以使用SSIS等工具连接到CSV文件,检查它针对表中的vales并从那里触发更新。