【发布时间】:2013-08-06 15:22:23
【问题描述】:
好的,根据Microsoft docs,SSIS 中的 OLE DB 命令转换就是这样做的
OLE DB 命令转换为数据流中的每一行运行一条 SQL 语句。例如,您可以运行在数据库表中插入、更新或删除行的 SQL 语句。
所以我想写一些 SQL 来在我的一张表中插入行只有当记录不存在时
所以我尝试了这个,但控件一直抱怨错误的 sintaxys
IF NOT EXISTS
(SELECT * FROM M_Employee_Login WHERE
Column1=?
AND Column2=?
AND Column3=?)
INSERT INTO [M_Employee_Login]
([Column1]
,[Column2]
,[Column3])
VALUES
(?,?,?)
但是,如果我删除 IF NOT EXISTS 部分(仅保留插入部分),控件说可能代码是好的,我做错了什么。
有没有更简单的解决方案?
更新:顺便说一句,我的来源是平面文件(csv 文件)
自回答后更新:只是为了让人们知道。我最终像我计划的那样使用了OLE DB Command Transformation,因为这个操作比OLE DB Destination好。不同之处在于我确实使用了Lookup Component 来过滤所有已经存在的记录(如建议的答案)。然后将OLE DB Command Transformation 与我在问题中遇到的Insert SQL 一起使用,它按预期工作。希望对你有帮助
【问题讨论】:
标签: sql-server insert ssis oledb insert-update