Azure Data Factory如何将多目录指定文件复制到Blob平级目录并保留文件名
实现方案
你用Lookup+For Each循环的思路是可行的,按以下步骤配置即可实现需求:
前置准备
- 新建2个链接服务,分别对接你的源文件共享、目标Blob存储
- 新建3个数据集:
- 存储
filepaths.txt的源文本数据集,用于Lookup读取路径列表 - 参数化的源文件共享数据集:新增
sourceFolder、sourceFileName两个参数,连接配置中文件夹路径、文件名分别绑定@dataset().sourceFolder、@dataset().sourceFileName,不要写死固定值 - 参数化的目标Blob数据集:新增
targetFileName参数,连接配置中固定文件夹路径为CombinedSubfolder,文件名绑定@dataset().targetFileName
- 存储
步骤1:配置Lookup活动
- 源选择
filepaths.txt对应的数据集 - 若
filepaths.txt无表头、每行存储一个路径,关闭「仅返回第一行」选项即可,默认读取的路径字段名为Prop_0;若有自定义表头,按实际字段名取值即可
步骤2:配置For Each循环活动
- 「项」参数填写
@activity('Lookup1').output.value(替换Lookup1为你的活动名) - 可按需开启「并行执行」提高复制效率,并行度上限根据你的Azure资源配额调整
步骤3:For Each内部添加Copy活动
源端配置
- 数据集选择参数化的源文件共享数据集
sourceFolder参数传值:@replace(item().Prop_0, concat('\\', split(item().Prop_0, '\\')[last(split(item().Prop_0, '\\'))]), '')sourceFileName参数传值:@split(item().Prop_0, '\\')[last(split(item().Prop_0, '\\'))]
目标端配置
- 数据集选择参数化的目标Blob数据集
targetFileName参数传值和上述sourceFileName一致:@split(item().Prop_0, '\\')[last(split(item().Prop_0, '\\'))]- 副本行为可按需选择「覆盖」或「跳过」重复文件
配置完成后运行管道,所有列表内的文件会直接复制到Blob的CombinedSubfolder平级目录下,不会携带源端子目录结构,文件名保持和源文件一致。
内容的提问来源于stack exchange,提问作者adan11
相关产品推荐
相关产品推荐

