SQL Server批量插入CSV更新?

时间:2015-06-25 14:40:52

标签: sql-server csv

我将CSV文件导入SQL服务器。问题是我需要更新是否找到了行,但我还没有找到INSERT UPDATE等效或类似的东西。

这是我目前的代码:

BULK INSERT Actuals_Financials_Temp FROM '\\STRMV3302\Temp\Actuals_Financials_Temp.csv'  
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', FIRSTROW = 2)

有没有办法更新匹配键的行?或者至少忽略它们,以便上传其余内容,然后执行类似BULK UPDATE的操作?

1 个答案:

答案 0 :(得分:3)

不直接,不。您需要BULK INSERT进入临时表,然后更新现有记录并插入丢失的记录。我会首先尝试使用本地临时表(即#TableName)。

从技术上讲,您可以执行以下任一操作(两者都使用OPENROWSET):

  • 跳过临时表并使用OPENROWSET(BULK...)进行UPDATE,然后使用INSERT查询。但是,必须对此进行测试,以确定两次读取文件的成本是否值得省去不必将其读入临时表(只是将其写回磁盘)。使用登台表可能仍然会更好,因为第一个查询UPDATE可能会自动创建一些有益于第二个查询INSERT的统计信息,因为该查询需要LEFT JOIN或者WHERE NOT EXISTS
  • MERGE以及OPENROWSET(BULK...),但MERGE有一些"问题"所以我不会尝试这个。