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

Bulk change all entries for a particular column in a SQL Server database

问题:我正在尝试将具有 thousands/millions 行的 .csv 文件插入 SQL 服务器 table使用 bulk insert 查询。现在我想通过批量更新来更新 table,其中特定列发生变化,例如价格发生变化。我怎样才能做到这一点?还有:我想在插入 table

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

现在,例如 table 包含价格列,当我第二次更新文件时,只更新

之前具有不同价格的行更新

分两步(或更多步)完成。

插入原始数据(缺陷和所有),然后 运行 一个单独的更新语句,使其看起来像你想要的那样。

对于一个大的或繁忙的table,或者为了在新数据准备好之前保持独立,您可能还想先批量插入一个单独的持有table,按摩和清理那里的数据,然后从控股 table 迁移到最终 table.

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

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

您不能只在上一次上传的基础上批量上传一个文件而只记录不同之处。您可以完全刷新数据(即:覆盖的完整加载),将完整的 CSV 上传到分段 table 并使用 SQL 代码比较两个 table,或者您可以使用SSIS 等工具连接到 CSV 文件,根据 table 中的值检查它并从那里触发更新。