Azure Data Factory每日CSV批量入对应Azure SQL表的活动选型咨询
Azure Data Factory 批量CSV到SQL表加载方案(父-子管道模式)
针对你每日批量加载50个CSV到对应SQL表的需求,推荐使用父-子管道模式,这种模式更易维护、便于后续扩展,具体实现步骤如下:
一、父管道:元数据收集与批量触发
核心活动:Get Metadata、Filter、For Each
- Get Metadata 活动
- 连接ADLS Gen2的目标文件夹,勾选
Child items选项,获取文件夹内所有文件的元数据(含文件名、修改时间、路径等)。
- 连接ADLS Gen2的目标文件夹,勾选
- Filter 活动
- 过滤出前一日生成的文件(适配23:00 CST接收、次日00:05 CST运行的时间窗口),过滤条件需转换时区后判断:
@and(greaterOrEquals(convertTimeZone(item().lastModified, 'UTC', 'China Standard Time'), startOfDay(addDays(utcNow(), -1))), less(convertTimeZone(item().lastModified, 'UTC', 'China Standard Time'), startOfDay(utcNow()))) - 若文件名包含日期标识,也可直接通过文件名字符串匹配过滤。
- 过滤出前一日生成的文件(适配23:00 CST接收、次日00:05 CST运行的时间窗口),过滤条件需转换时区后判断:
- For Each 活动
- 遍历Filter输出的文件列表,在循环体内调用子管道,传递两个关键参数:
FileName:去掉.csv后缀的文件名(如@replace(item().name, '.csv', '')),用于匹配SQL表名FilePath:文件的完整存储路径,用于子管道定位源文件
- 遍历Filter输出的文件列表,在循环体内调用子管道,传递两个关键参数:
二、子管道:单文件到对应SQL表的加载
核心活动:Copy Data
- 源数据集配置
- 选择ADLS Gen2数据集,将文件路径设置为父管道传入的
FilePath参数;CSV格式配置需勾选“首行作为标题”(确保列名与SQL表匹配),并设置正确的分隔符。
- 选择ADLS Gen2数据集,将文件路径设置为父管道传入的
- 目标数据集配置
- 选择Azure SQL数据库数据集,将表名设置为父管道传入的
FileName参数(@pipeline().parameters.FileName),确保SQL表列名与CSV首行标题完全一致。
- 选择Azure SQL数据库数据集,将表名设置为父管道传入的
- Copy Data 活动
- 源端选择上述ADLS数据集,目标端选择SQL数据集;复制行为根据需求选择:
- 若需覆盖每日数据:选择
Truncate table then insert - 若需增量追加:选择
Append
- 若需覆盖每日数据:选择
- 源端选择上述ADLS数据集,目标端选择SQL数据集;复制行为根据需求选择:
三、调度配置
在父管道中创建时间触发器:
- 触发时间:每日00:05 CST,时区选择
China Standard Time - 重复周期:1天
四、关键注意事项
- 确保ADF的链接服务拥有ADLS Gen2的读取权限、Azure SQL的写入权限(如SQL的db_owner角色或对应表的读写权限)。
- 若CSV无首行标题,需在Copy Data活动中手动映射列,但建议CSV保留首行标题以实现自动列映射。
- 可调整For Each活动的并行度(默认20),根据资源情况设置合理数值(如20-30),平衡加载效率与资源占用。
内容的提问来源于stack exchange,提问作者Sindhur
相关产品推荐
相关产品推荐

