You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS中如何用Lookup匹配4主键列并输出6列至OLE DB Command?

在SSIS中配置Lookup转换实现主键匹配并返回全部所需列

按照以下步骤配置Lookup转换,即可实现仅用4个主键列匹配,同时输出全部6列用于后续的更新/插入操作:

  • 步骤1:设置Lookup的查询语句
    在Lookup转换编辑器的连接选项卡中,选择「使用SQL查询指定要返回的数据集」,保留你现有的查询语句:

    SELECT 
        FISCAL_YR, LOC_CODE, SYSTEM_ID,  
        SYSTEM_CODE, LOC_NAME, ALIAS_NAME 
    FROM 
        LC1U1.Location_Supertbl1;
    

    这个语句的作用是从DB2目标表中获取所有需要的列,包括主键和要更新的字段。

  • 步骤2:配置匹配列与输出列
    切换到列选项卡:

    1. 将数据流上游(SQL Server源)的4个主键列:FISCAL_YR、LOC_CODE、SYSTEM_ID、SYSTEM_CODE,分别与Lookup数据集(DB2表)中的对应主键列建立匹配关系(拖动列进行关联,或在下拉菜单中选择匹配)。
    2. 除了主键列,额外将Lookup数据集中的LOC_NAME、ALIAS_NAME列添加到输出(选择「查找列」作为输出类型)。
      此时Lookup的输出将包含上游源的所有列,加上匹配到的DB2表中的LOC_NAME、ALIAS_NAME(无匹配时为NULL)。
  • 步骤3:拆分匹配/不匹配分支
    切换到错误输出选项卡,选择「将不匹配的行重定向到不匹配输出」。这样Lookup会生成两个分支:

    • 匹配分支:发送到OLE DB Command执行更新操作
    • 不匹配分支:发送到OLE DB Destination执行插入操作
  • 步骤4:配置OLE DB Command的更新逻辑
    将更新语句修改为使用源的新值(如果你的需求是用SQL Server源的LOC_NAME、ALIAS_NAME覆盖DB2的对应字段):

    UPDATE LC1U1.Location_Supertbl1 
    SET LOC_NAME = ?, ALIAS_NAME = UPPER(?)
    WHERE FISCAL_YR = ? 
      AND LOC_CODE = ? 
      AND SYSTEM_ID = ? 
      AND SYSTEM_CODE = ?
    

    在参数映射中,依次对应:

    1. 上游源的LOC_NAME
    2. 上游源的ALIAS_NAME
    3. 上游源(或Lookup返回)的FISCAL_YR
    4. 上游源(或Lookup返回)的LOC_CODE
    5. 上游源(或Lookup返回)的SYSTEM_ID
    6. 上游源(或Lookup返回)的SYSTEM_CODE

注意:Lookup的匹配逻辑仅由你在「列」选项卡中指定的4个主键匹配列决定,和查询语句返回的列数无关,所以即使查询返回6列,也只会按主键进行匹配。

内容的提问来源于stack exchange,提问作者Steven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:58:09