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

在Azure Data Factory中循环批量导入无列名CSV至Azure SQL不同表

批量将Blob Storage中无列名CSV文件导入Azure SQL对应表

我在Blob Storage里有多个无列名的CSV文件,已经用Get Metadata Activity获取到了所有文件列表。现在需要通过循环调用Copy Data Activity,把这些文件分别导入Azure SQL中结构匹配的不同表。单个文件的导入已经实现,现在要完成批量循环处理。

示例文件

sample1.txt

5|1|300|100| |101|809|4|4|4|0|0|0|0|0|0|0|0|2|0|0|0|0|-4|0|0||2020-07-06
5|1|300|100| |102|809|6|5|5|0|0|0|0|0|0|0|0|2|0|0|0|0|-5|0|0||2020-07-14
5|1|300|100| |103|809|-1|-1|-1|0|0|0|0|0|0|0|0|2|0|0|0|0|1|0|0||2020-07-05
5|1|300|100| |104|809|7|7|7|0|0|0|0|0|0|0|0|2|0|0|0|0|-7|0|0||2020-07-05
5|1|300|100| |105|809|-5|-5|-5|0|0|0|0|0|0|0|0|2|0|0|0|0|5|0|0||2021-08-18
5|1|300|100| |106|809|0|0|0|0|0|0|0|0|0|0|0|2|0|0|0|0|0|0|0||2020-07-05
5|1|300|100| |107|809|8|8|8|0|0|0|0|0|0|0|0|2|0|0|0|0|-8|0|0||2020-07-14
5|1|300|100| |108|809|0|0|0|0|0|0|0|0|0|0|0|2|0|0|0|0|0|0|0||2020-07-08
5|1|300|100| |109|809|2|2|2|0|0|0|0|0|0|0|0|2|0|0|0|0|-2|0|0||2020-07-14
5|1|300|100| |111|809|2|2|2|0|0|0|0|0|0|0|0|2|0|0|0|0|-2|0|0||2020-07-07
5|1|300|100| |112|809|4|4|4|0|0|0|0|0|0|0|0|2|0|0|0|0|-4|0|0||2020-07-05
5|1|300|100| |114|809|3|3|3|0|0|0|0|0|0|0|0|2|0|0|0|0|-3|0|0||2020-07-08

sample2.txt

5|1|300|100| |131|809|0|0|0|0|0|0|0|0|0|0|0|2|0|0|0|0|0|0|0||2020-07-06
5|1|300|100| |132|809|7|7|7|0|0|0|0|0|0|0|0|2|0|0|0|0|-7|0|0||2020-07-08
5|1|300|100| |135|809|0|0|0|0|0|0|0|0|0|0|0|2|0|0|0|0|0|0|0||2020-07-05
5|1|300|100| |136|809|2|2|2|0|0|0|0|0|0|0|0|2|0|0|0|0|-2|0|0||2020-07-08
5|1|300|100| |138|809|5|5|5|0|0|0|0|0|0|0|0|2|0|0|0|0|-5|0|0||2020-07-08
5|1|300|100| |139|809|3|3|3|0|0|0|0|0|0|0|0|2|0|0|0|0|-3|0|0||2020-07-07
5|1|300|100| |140|809|0|0|0|0|0|0|0|0|0|0|0|2|0|0|0|0|0|0|0||2020-07-06
5|1|300|100| |142|809|0|0|0|0|0|0|0|0|0|0|0|2|0|0|0|0|0|0|0||2020-07-08
5|1|300|100| |143|809|3|3|3|0|0|0|0|0|0|0|0|2|0|0|0|0|-3|0|0||2020-07-14
5|1|300|100| |146|809|0|0|0|0|0|0|0|0|0|0|0|2|0|0|0|0|0|0|0||2020-07-05

批量循环处理实现步骤

1. 配置Get Metadata Activity输出

确保Get Metadata Activity的Field List勾选childItems,这样能获取Blob容器内所有文件的完整信息(含文件名、路径等)。

2. 添加ForEach Activity循环组件

将Get Metadata的输出作为ForEach的遍历源,在ForEach的Items属性中输入动态表达式:

@activity('Get Metadata').output.childItems

这会自动遍历所有获取到的文件。

3. 在ForEach内部配置Copy Data Activity

  • 源数据集设置:
    编辑Blob Storage源数据集,把文件名设为动态内容,引用当前循环的文件名:

    @item().name
    

    同时在数据集连接配置里,指定分隔符为|,并将第一行作为标题设为否(因为文件无列名)。

  • 目标数据集设置:
    编辑Azure SQL目标数据集,把表名设为动态内容,根据文件名匹配对应SQL表。比如文件名是sample1.txt对应表sample1,可用表达式提取文件名并去掉后缀:

    @replace(item().name, '.txt', '')
    

    注意:需提前在Azure SQL中创建好结构匹配的表(列数、数据类型要和CSV文件完全对应)。

4. 验证并运行管道

检查所有动态表达式是否正确,确认每个文件都能对应到目标表后,运行管道即可完成批量导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:22:08