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

如何从SQL表检索架构并在Azure Data Factory中强制匹配至对应表

解决方案

一、获取SQL数据库表的列名与数据类型

使用SQL系统视图查询,可一次性导出所有表的结构信息:

SELECT 
    t.name AS table_name,
    c.name AS column_name,
    ty.name AS data_type,
    c.max_length,
    c.is_nullable
FROM 
    sys.tables t
JOIN 
    sys.columns c ON t.object_id = c.object_id
JOIN 
    sys.types ty ON c.system_type_id = ty.system_type_id
ORDER BY 
    t.name, c.column_id;

若仅需单张表的结构,添加WHERE条件过滤:

WHERE t.name = '目标表名'

二、ADF中强制匹配SQL目标表架构的操作方法

方法1:复制活动手动配置列映射(单表场景)

  • 打开ADF复制活动,切换至映射标签页
  • 点击导入架构,选择从目标存储导入,直接加载SQL目标表的列结构
  • 自动匹配同名列后,删除源表多出列的映射项;对数据类型不匹配的列,手动调整源列类型至目标表对应类型(如源string转目标varchar、源int64转目标int)
  • 勾选映射页底部的跳过不匹配的列,确保仅复制目标表存在的列

方法2:数据流动实现列筛选与类型转换(多表/复杂场景)

  • 创建ADF数据流动,添加源数据集(ADF数据源)和目标数据集(SQL目标表)
  • 在源与目标间添加选择转换:
    • 进入选择转换的映射页,点击导入目标架构,自动保留与目标表匹配的列,过滤源表多余列
  • 若需类型转换,添加派生列转换,使用ADF内置函数处理:
    • 字符串转指定长度字符类型:toString(源列, 'UTF-8')
    • 数值类型转换:toInteger(源列) 或 toDecimal(源列, 18, 2)
  • 配置目标数据集的架构选项为使用目标架构,严格对齐目标表结构

方法3:元数据驱动批量处理(多张表场景)

通过Lookup+ForEach活动实现批量表的架构匹配:

  1. Lookup活动:执行前述SQL查询,获取所有目标表的名称及列结构
  2. ForEach活动:遍历Lookup返回的表列表,循环内执行复制活动:
    • 动态设置源/目标数据集的表名:@item().table_name
    • 使用动态内容生成列映射,仅保留目标表存在的列并处理类型转换,示例动态映射代码:
      @json(concat('{', string(join(select(map(activity('Lookup').output.value, (item) => concat('"', item.column_name, '": {"source": {"name": "', item.column_name, '"}, "sink": {"name": "', item.column_name, '"}}')), ', ')), '}'))
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:22:48