如何在SSIS数据流中的两个源之间获得不匹配的数据?

时间:2018-06-04 13:18:10

标签: sql ssis ssis-2008

我有两个数据源,一个是sql表,一个是平面文件(csv)。两个来源都有完全相同的列。示例数据:

表:

HCN  Name  Surname   DOB
111  John   Black    2013-12-10
222  Jack   White    1989-01-14
333  Brian  Brown    2000-04-22

FLATFILE:

HCN  Name  Surname   DOB
111  John   Black    2013-12-10
444  Alex   Smith    1978-05-16

请注意,HCN列是主键。我需要做的是将表中包含的记录包括在FlatFile中。

预期产出:

HCN  Name  Surname   DOB
222  Jack   White    1989-01-14
333  Brian  Brown    2000-04-22

我必须在我的SSIS包的数据流中执行此操作。我在下面做的是获得匹配的记录(HCN:111),但我怎么能得到我无法弄清楚的无法匹敌的记录。任何帮助将不胜感激。

enter image description here

2 个答案:

答案 0 :(得分:4)

解决方案1:查看:
您可以按照以下步骤操作:

  • 添加查找转换
    在连接选项卡中,选择您的flatfile连接
    在列选项卡中,拖放“连接”列 在常规选项卡中,句柄不通过重定向行匹配条目
  • 将不匹配的输出重定向到目的地

enter image description here

解决方案2:左边抗人加入

您可以按照以下步骤操作:

1 对数据集进行排序/或将源的属性修改为isSorted    = true

2 在密钥上使用LEFT JOIN,并添加一个包含右侧ID的新列

3 在右侧添加条件拆分条件    side ID为null

然后将CASE 1拆分数据重定向到您的目的地,您只有左侧的行没有右侧对应

enter image description here

答案 1 :(得分:3)

首先,我建议您将平面文件数据加载到OLEDB登台表中,这是可选的。如果将平面文件数据加载到目标位置,则可以将主键对齐以进行查找。

创建一个临时表以插入不匹配的记录,在这种情况下只需要异步转换

请参阅下面的查找转换 enter image description here

检查查找列:

这是示例

enter image description here