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

使用For each活动从Azure Blob Storage多子文件夹加载文件到Azure SQL失败,求解决方法

从Azure Blob多子文件夹读取文件并加载到Azure SQL的可行方案

下面是几种能实现需求的具体方法,结合你之前用For Each活动的场景,优先推荐前两种:

方法一:Get Metadata + Filter + For Each 组合实现精准遍历

  • 先添加Get Metadata活动,连接到Blob存储的根容器,勾选「Child items」选项,获取容器下所有文件和文件夹的元数据。
  • 接着添加Filter活动,过滤掉文件夹只保留文件,使用表达式:@equals(item().type, 'File')。
  • 将Filter的输出作为For Each活动的迭代项,在For Each内部配置Copy活动:源数据集选择Blob存储,文件路径用动态表达式@item().path指向单个文件;目标数据集设为Azure SQL,完成表映射和加载规则配置。

方法二:直接配置Blob数据集递归读取

  • 打开Blob源数据集的配置界面,文件路径选择根容器,勾选「递归」选项,还可通过「文件筛选器」指定要读取的文件后缀(比如.csv)。
  • 如果需要逐文件处理,要么开启Copy活动的逐文件加载逻辑,要么将数据集的文件列表作为For Each的迭代项,搭配Copy活动完成批量加载。

方法三:用Lookup活动获取文件列表

  • 配置Lookup活动连接Blob存储,针对ADLS Gen2可使用LIST命令,获取所有子文件夹下的文件路径列表。
  • 将Lookup的输出传给For Each活动,后续逻辑同方法一,用Copy活动逐个加载文件到SQL。

额外排查点(解决你之前操作失败的可能原因)

  • 检查Blob存储权限:确保Data Factory的托管标识/服务主体拥有「Storage Blob Data Reader」及以上权限。
  • 验证For Each的迭代项:必须先过滤出文件类型,避免把文件夹纳入迭代导致失败。
  • 核对Copy活动的源路径:动态表达式要准确,比如@concat(item().folderPath, item().name),可根据Get Metadata返回的字段调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:05:25