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

标签 sql ssis ssis-2008

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

table :

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

最佳答案

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

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

  • enter image description here

    解决方案2:左前加入

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

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

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

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

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

    enter image description here

    关于sql - 如何在SSIS数据流中的两个源之间获取不匹配的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50681600/

    相关文章:

    c# - Dapper 带有 sql 查询动态参数

    object - 在SSIS中插入两个变量到对象

    sql-server - SSIS::如何在不使用 SCD 向导的情况下在 SSIS 中实现 SCD 类型 2。当传入数据集对同一业务 key 有多个记录时

    C# Property get set 不设置值

    sql - 对一组数据使用整数而不是 varchar *真的*值得吗?

    c# - 在 SqlConnection.Open()、asp.net 上未将对象引用设置为对象的实例

    ssis - 如何修复 SSIS "File/Process not in path"警告?

    .net - 在 .NET 中覆盖 SSIS 配置连接字符串

    sql - 数据流任务中的 SSIS 变量使用不正确