看到您使用的是 SQL Server 2008,我会推荐这种方法:
- 首先将您的 CSV 文件批量复制到临时表中
- 使用 MERGE 命令从该临时表更新您的目标表
查看MSDN 文档和一篇关于如何使用 MERGE 命令的精彩博客文章。
基本上,你在你的实际数据表和暂存表之间建立一个共同标准(例如一个共同的主键)的链接,然后你可以定义什么时候做什么
- 行匹配,例如该行同时存在于源表和目标表中——>通常你要么更新一些字段,要么一起忽略它
- 源中的行在目标中不存在 --> 通常是 INSERT 的情况
你会有这样的MERGE
声明:
MERGE TargetTable AS t
USING SourceTable AS src
ON t.PrimaryKey = src.PrimaryKey
WHEN NOT MATCHED THEN
INSERT (list OF fields)
VALUES (list OF values)
WHEN MATCHED THEN
UPDATE
SET (list OF SET statements)
;
当然,ON
如果需要,该子句可以涉及更多。当然,您的WHEN
陈述也可以更复杂,例如
WHEN MATCHED AND (some other condition) THEN ......
等等。
MERGE
是 SQL Server 2008 中一个非常强大且非常有用的新命令 - 如果可以,请使用它!