Azure Pipeline技术求助:下载NHTSA ZIP并转TXT文件遇错误
解决Azure Data Factory处理NHTSA ZIP文件的问题
一、排查ZIP文件下载后缺失的问题
- 检查Blob存储路径:确认复制数据活动的Blob接收器路径是否正确,可在Azure存储资源管理器中全局搜索
FLAT_CMPL.zip定位文件。 - 验证源URL有效性:直接访问你配置的HTTP链接(注意你写的是
static.nhs.gov,但NHTSA官方域名应为nhtsa.gov,大概率是笔误),确认能否正常下载ZIP文件。若链接无效,复制活动会显示成功但无数据写入。 - 查看活动运行日志:在Data Factory管道运行详情中,检查该复制活动的输入输出字节数。若字节数为0,说明源文件未拉取到,需排查HTTP源配置(如是否需要代理、请求头设置)。
二、解决ZIP转文本的if there's a binary source, the sink must be binary also错误
该错误因直接将二进制ZIP作为源复制到文本接收器导致,Data Factory不支持此类直接转换,需按以下流程处理:
方案1:使用解压活动+复制数据活动
- 添加「解压」活动
- 源:选择Blob存储中的ZIP文件,源类型设为
Binary,指定文件路径。 - 目标:选择Blob存储内的一个文件夹作为解压后文件的存放路径,目标类型设为
Binary。 - 配置:按需勾选「递归」(若ZIP含嵌套文件夹),其余保持默认。
- 源:选择Blob存储中的ZIP文件,源类型设为
- 添加「复制数据」活动
- 源:选择解压后的文本文件,源类型设为
DelimitedText,配置对应分隔符、编码、表头规则等。 - 接收器:选择Blob存储目标文件夹,接收器类型设为
DelimitedText,配置输出分隔符与文件名。
- 源:选择解压后的文本文件,源类型设为
方案2:单复制数据活动直接处理
无需额外解压活动,可在第一个复制数据活动中集成解压逻辑:
- 源:HTTP源类型设为
Binary,在「压缩」设置中选择Zip,指定ZIP内要提取的目标文件名(若ZIP仅含单个文本文件)。 - 接收器:直接设为
DelimitedText,配置对应格式参数,一步完成下载、解压、格式转换。
额外注意事项
- 提前确认ZIP内文本文件的分隔符类型(逗号、制表符等),避免复制活动格式配置错误。
- 确保Data Factory托管标识对Blob存储容器拥有读写权限,防止文件读写失败。
内容的提问来源于stack exchange,提问作者Sam Magid
相关产品推荐
相关产品推荐

