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

如何通过ADF对比同结构Azure SQL Database表A与B并插入A中缺失行

ADF数据管道实现表A缺失记录插入表B的方案

需求说明

要搭建一个ADF数据管道,对比结构一致的Azure SQL Database表A(100条记录)和表B(90条记录),将表A中存在但表B缺失的10条记录插入到表B中。

已尝试的配置条件

  • 条件1:@greaterOrEquals(activity('GetLastModifiedDate').output.lastModified,adddays(utcnow(),-7))
  • 条件2:@and(equals(item().name,'master_data'),greaterOrEquals(activity('GetLastModifiedDate').output.lastModified,adddays(utcnow(),-7)))

可行实现方案

方案一:Lookup+ForEach+Copy(小数据量场景)

  1. Lookup活动获取缺失记录
    数据源选择Azure SQL Database,执行以下查询语句:

    SELECT * FROM 表A
    WHERE NOT EXISTS (SELECT 1 FROM 表B WHERE 表A.主键列 = 表B.主键列)
    

    关闭“仅返回第一行”选项,确保获取到所有缺失的10条记录。

  2. ForEach循环插入记录
    设置循环项为@activity('Lookup表A缺失记录').output.value,内部添加Copy活动:

    • 源使用“内联数据集”,数据填写@item()
    • 目标选择表B,因表结构相同,直接启用自动映射即可。

方案二:Data Flow(大数据量场景)

  1. 搭建Data Flow逻辑

    • 添加两个源数据集,分别关联表A和表B
    • 添加Join活动,连接类型选择Left Anti,通过主键列关联两张表,输出表A独有的记录
    • 添加Sink活动,指向表B,写入方式选择Insert
  2. 管道中调用Data Flow
    添加Execute Data Flow活动,关联建好的Data Flow,按需配置参数即可运行。

现有条件的用法优化

你现有的两个条件用于判断表是否在7天内修改过,可放到If Condition活动中做前置校验:

  • 条件1:判断目标表最近修改时间在7天内
  • 条件2:同时校验表名为master_data且最近修改时间在7天内
    满足条件时再执行数据对比插入逻辑,避免无效运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:30:56