SSIS 2012 - 插入新行,忽略现有行

Posted

技术标签:

【中文标题】SSIS 2012 - 插入新行,忽略现有行【英文标题】:SSIS 2012 - Insert new rows, ignore existing rows 【发布时间】:2013-09-25 17:04:25 【问题描述】:

我已经很久没有使用 SSIS 了。我正在使用 SSIS 2012。我想将一个表中的行插入到另一个表中。但是,我只想根据主键将源中不存在的行插入目标中。对于现有行,我想简单地忽略源中的行。我知道将行从一个表插入到另一个表是一件简单的事情,但是最好(最有效)的方法是检查源中的行是否存在于目标中,如果存在则忽略它?

【问题讨论】:

【参考方案1】:

在您的源组件和目标组件之间,添加一个查找组件。

将查找配置为重定向到不匹配行的不匹配输出。

在您的查找源中,编写一个类似SELECT T.PK1, T.PK2 FROM dbo.MyTable T 的查询,您只需拉回主键,然后将您的输入数据与目标表的数据进行比较。

不匹配输出的结果将是目标中不存在的行。

2008 年问题的示例屏幕截图

Importing a large data file with sorts and joins in SSIS

【讨论】:

谢谢。我会试一试。这是我不确定的组件,也不知道该使用哪一个。

以上是关于SSIS 2012 - 插入新行,忽略现有行的主要内容,如果未能解决你的问题,请参考以下文章

更新或插入 SQL Server 时忽略错误行

SSIS - 删除现有行然后插入,不完整的结果

Oracle SQL 多次插入忽略重复行

封装字符串以忽略引号

插入忽略不会忽略

从固定格式的文本文件批量插入忽略行终止符