Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 批量更改SQL Server数据库中特定列的所有条目_Sql Server_Bulkinsert_Bulkupdate - Fatal编程技术网

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

Sql server 批量更改SQL Server数据库中特定列的所有条目,sql-server,bulkinsert,bulkupdate,Sql Server,Bulkinsert,Bulkupdate,问题:我正在尝试使用批量插入查询将一个包含数千行/数百万行的.csv文件插入到SQL Server表中。现在我想用批量更新来更新表,其中特定列发生了变化,例如价格发生了变化。我该怎么做?还有:我想在插入到表中时忽略约束 BULK INSERT Table FROM 'D:\test.csv' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n') GO 现在,例如,当我第二次更新文件时,表中包含价格列,仅更新之前具有不同价格的行。

问题:我正在尝试使用
批量插入
查询将一个包含数千行/数百万行的
.csv
文件插入到SQL Server表中。现在我想用批量更新来更新表,其中特定列发生了变化,例如价格发生了变化。我该怎么做?还有:我想在插入到表中时忽略约束

BULK INSERT Table
FROM 'D:\test.csv'
WITH
    (FIELDTERMINATOR = ',',
     ROWTERMINATOR = '\n')
GO
现在,例如,当我第二次更新文件时,表中包含价格列,仅更新之前具有不同价格的行。

分两个(或更多)步骤进行更新

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

对于大型或繁忙的表,或者为了在准备就绪之前保持新数据的独立性,您可能还希望首先将数据大容量插入到单独的保留表中,对其中的数据进行处理和清理,然后从保留表迁移到最终的表中

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

您将无法对批量插入代码进行简单或快速的调整。它只做它所做的,不做更多。

分两步(或更多步)完成

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

对于大型或繁忙的表,或者为了在准备就绪之前保持新数据的独立性,您可能还希望首先将数据大容量插入到单独的保留表中,对其中的数据进行处理和清理,然后从保留表迁移到最终的表中

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


您将无法对批量插入代码进行简单或快速的调整。它只做它所做的,什么也不做。

你不能只在以前的上传上批量上传一个文件,而只记录差异。您可以完全刷新数据(即:覆盖的满载),将完整的CSV上载到暂存表中,并使用SQL代码比较两个表,也可以使用SSIS等工具连接到CSV文件,对照表中的值进行检查,并从表中触发更新。

您不能只批量上传一个文件,而只记录差异。您可以完全刷新数据(即:覆盖的满载),将完整CSV上载到一个临时表中,并使用SQL代码比较两个表,也可以使用SSIS等工具连接到CSV文件,对照表中的值进行检查,并从那里触发更新