Snowflake管道刷新致负载失败,内部Stage查询GZIP解压报错求助
Snowflake内部Stage读取GZIP压缩JSON文件报错的解决方法
问题现象
执行管道刷新时加载失败,查询内部Stage时出现两种报错:
- 设置文件格式压缩为
GZIP,报错:
Invalid data encountered during decompression for file: compression type used: 'GZIP', cause: 'data error'.
- 设置压缩为
None,报错:
invalid character outside of a string: '\37' File line 1, character 1 Row 0, column $1
已在PUT命令中指定gzip => true。
排查与解决步骤
验证文件有效性
用GET命令将Stage中的文件下载到本地,使用gzip解压工具(如gzip -d或7-Zip)尝试解压:GET @your_internal_stage/目标文件名.json.gz file:///本地存储路径/;若解压失败,说明上传过程中压缩异常,需重新上传文件。
检查文件格式配置
确保JSON文件格式的压缩设置与实际文件匹配,同时根据JSON结构调整其他参数:CREATE OR REPLACE FILE FORMAT json_gzip_format TYPE = JSON COMPRESSION = 'GZIP' STRIP_OUTER_ARRAY = TRUE; -- 按需开启,若JSON为数组结构核对PUT命令执行逻辑
查看PUT命令的执行日志,确认上传过程无异常:SELECT * FROM TABLE(INFORMATION_SCHEMA.PUT_RESULT_SCAN(LAST_QUERY_ID()));避免
AUTO_COMPRESS与手动指定gzip => true冲突,统一使用一种压缩方式:-- 方式1:自动压缩源文件 PUT file:///本地文件路径/源文件.json @your_internal_stage AUTO_COMPRESS = TRUE; -- 方式2:上传已压缩好的文件 PUT file:///本地文件路径/源文件.json.gz @your_internal_stage COMPRESSION = GZIP;使用指定文件格式查询Stage
直接关联正确的文件格式查询,避免手动参数错误:SELECT $1 FROM @your_internal_stage (FILE_FORMAT => 'json_gzip_format');校验JSON文件内容
本地解压后,用JSON校验工具(如jq)检查文件语法是否合法:jq . 解压后的文件名.json若JSON本身存在语法错误,需修正源文件后重新上传。
内容的提问来源于stack exchange,提问作者Mythri P
相关产品推荐
相关产品推荐

