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

Era*_*nli 6 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
Run Code Online (Sandbox Code Playgroud)

平面文件:

HCN  Name  Surname   DOB
111  John   Black    2013-12-10
444  Alex   Smith    1978-05-16
Run Code Online (Sandbox Code Playgroud)

请注意,列 HCN 是主键。我需要做的是获取表中包含的此类记录,但 FlatFile。

预期输出:

HCN  Name  Surname   DOB
222  Jack   White    1989-01-14
333  Brian  Brown    2000-04-22
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

Kob*_*obi 8

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


  • 在连接选项卡中添加查找转换,
    在列选项卡中选择您的平面文件连接,在常规选项卡中拖放连接列,通过重定向行处理不匹配的条目
  • 将不匹配的输出重定向到您的目的地

在此处输入图片说明

解决方案2:左反连接

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

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

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

3右侧ID为空添加条件拆分条件

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

在此处输入图片说明