Azure Synapse Pipeline中Copy Activity跨容器复制文件文件夹失败求助
可行的容器内容复制方案
方案1:优化Copy Activity配置
调整Copy Activity及数据集的关键配置,适配复杂目录与压缩文件:
- 源数据集:开启「递归」选项,确保遍历所有子文件夹;若需解压压缩包并复制内部文件,在数据集的「压缩」设置中指定对应格式(如Zip),设置「解压行为」为「解压到临时位置后复制文件」。
- 复制活动:源路径设为容器根目录,用通配符
*匹配所有内容;目标端勾选「保留层级」,确保原目录结构完整复制。
方案2:Get Metadata + ForEach 组合流程
通过遍历实现逐项精准复制:
- Get Metadata Activity:连接源容器,字段列表选择
childItems,获取所有文件、子文件夹、压缩包的完整列表。 - ForEach Activity:循环遍历上述列表,每次循环调用Copy Activity处理单个项,避免批量复制的兼容性问题。
方案3:使用AzCopy命令行
借助Azure官方工具AzCopy,适配复杂场景更稳定:
执行如下命令(替换占位符为实际信息):
azcopy copy "https://<源存储账户>.blob.core.windows.net/<源容器>?<源SAS令牌>" "https://<目标存储账户>.blob.core.windows.net/<目标容器>?<目标SAS令牌>" --recursive=true
该命令会递归复制源容器内所有内容,包括嵌套文件夹与压缩文件,无需额外配置。
方案4:Azure Functions自定义脚本
若需灵活处理压缩包内部文件,编写自定义函数:
- 用Python/C#实现函数逻辑:遍历源容器所有Blob,普通文件直接复制;压缩包则下载到临时目录解压,将内部csv/xlsx文件上传至目标容器对应路径。
内容的提问来源于stack exchange,提问作者pythonCoder
相关产品推荐
相关产品推荐

