代码之家  ›  专栏  ›  技术社区  ›  Eray Balkanli

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

  •  3
  • Eray Balkanli  · 技术社区  · 8 年前

    我有两个数据源,一个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 回复  |  直到 8 年前
        1
  •  4
  •   Kobi    8 年前

    解决方案1:查找:
    您可以执行以下步骤:

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

    enter image description here

    解决方案2:左反连接

    您可以执行以下步骤:

    对数据集排序/或修改要排序的源的属性 =真

    在键上使用左联接,并添加包含右侧id的新列

    在右侧添加条件拆分条件 边ID为空

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

    enter image description here

        2
  •  3
  •   Ven    8 年前

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

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

    有关查找转换,请参阅下面的内容 enter image description here

    检查查找列:

    下面是一个例子

    enter image description here

    推荐文章