Azure Data Factory从SFTP复制zip到Blob后缀变.zip.txt如何获取原CSV
Azure Data Factory从SFTP复制zip文件后缀变为.zip.txt的原因及解决方案
问题产生原因
- SFTP服务端的MIME类型识别逻辑导致:大部分SFTP服务器无法识别zip格式二进制文件的MIME类型时,会自动给文件名追加
.txt后缀,ADF默认沿用源端返回的文件名,就会出现.zip.txt的异常后缀。 - ADF复制活动未启用二进制复制模式:如果复制活动默认使用文本解析模式,ADF会将无法识别的二进制文件判定为文本文件,自动给输出文件追加
.txt后缀。 - Sink端配置错误:Blob存储Sink的配置中如果开启了自动追加文件扩展名的选项,也会额外补充
.txt后缀。
解决方案
1. 修复复制活动配置,获取正常的zip文件
- 打开对应ADF管道的复制活动配置页,将源端和Sink端的传输模式都设置为
二进制复制,该模式下ADF不会修改文件内容和文件名,原样传输zip文件。 - 在Sink的文件名配置项中,添加动态表达式修正后缀,示例:
@replace(pipeline().parameters.SourceFileName, '.txt', ''),也可以直接显式指定输出文件名为指定名称加.zip后缀。 - 重新运行复制活动,即可在Blob存储中得到后缀正常的zip文件。
2. 从zip包中提取原始CSV文件
- 如果使用ADF直接处理:在复制活动的Sink配置中找到
压缩设置模块,压缩类型选择ZipDeflate,勾选解压缩选项,运行复制活动后会直接将zip包内的CSV文件输出到Blob存储,无需额外操作。 - 如果已有
.zip.txt存量文件:直接重命名该文件,删除末尾的.txt后缀即可得到正常可用的zip压缩包,解压后就能获取内部的原始CSV文件,额外追加的后缀不会修改zip包的二进制内容,不会损坏文件。
内容的提问来源于stack exchange,提问作者Teegala Akhil reddy
相关产品推荐
相关产品推荐

