如何在Azure Data Factory中遍历Blob文件夹解压zip并加载CSV到SQL表
Azure Data Factory 解压Blob中zip文件并导入SQL的实现方案
前置资源准备
提前在ADF中创建好三类链接服务:
- 源存储链接服务:指向存储productblob容器的Azure存储账号
- 输出存储链接服务:可复用源存储的链接服务,提前在存储账号中新建空容器
unzip-output用于存放解压后的csv文件 - 目标SQL链接服务:指向需要导入数据的SQL数据库实例
现有Foreach迭代器内部逻辑调整
你已经完成了文件夹遍历逻辑,只需在Foreach活动的循环体内新增以下3个活动即可:
1. 解压zip文件的复制活动
ADF原生复制活动支持zip格式自动解压,无需额外编写代码:
- 源配置:选择Azure Blob存储的二进制数据集,路径通过动态表达式拼接为当前迭代到的文件夹下的对应zip文件,源设置页勾选「压缩」选项,压缩类型选择ZipDeflate
- 接收器配置:选择Azure Blob存储的二进制数据集,路径指向
unzip-output容器,接收器设置页勾选「解压缩文件」 - 运行该复制活动后,zip包内的csv文件会直接解压输出到
unzip-output容器中
2. 通用csv数据集配置
创建一个csv格式的数据集,指向unzip-output容器,无需指定固定文件名,按你实际csv文件的结构配置列分隔符、编码、是否包含表头即可,因为三个csv结构完全一致,ADF可自动识别所有匹配的文件。
3. 导入SQL的复制活动
以上述csv数据集作为源,目标SQL表作为接收器运行复制活动,即可将解压后的csv数据导入到目标SQL表中。如果需要单批次仅导入当前迭代对应的单份csv,可给csv数据集新增文件名参数,通过动态表达式传入当前迭代对应的csv文件名即可。
可选简化方案(无需Foreach迭代器)
如果没有单文件夹单独处理的业务要求,可直接省略Foreach迭代器,两步完成全流程:
- 单个复制活动直接递归遍历productblob容器下所有zip文件,一次性全部解压到
unzip-output容器 - 单个复制活动批量读取
unzip-output下所有csv文件,一次性导入目标SQL表,流程更简洁高效
内容的提问来源于stack exchange,提问作者Rakesh Mishra
相关产品推荐
相关产品推荐

