You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将S3中gzip压缩JSON文件加载至Redshift时遇格式错误问题求助

解决Redshift COPY命令加载S3 Gzip JSON文件的错误

你遇到的错误核心有两个原因,我逐个拆解并给出解决办法:

1. JSON参数的写法错误

你命令里写的json 'AUTO'是大写格式,Redshift仅识别小写的'auto'作为自动匹配的关键字。大写的'AUTO'会被Redshift误认为是一个S3路径,因此抛出了"S3 path格式无效"的错误。

2. S3文件的JSON格式不符合解析要求

你的文件里把两个独立的JSON对象放在了同一行,用空格分隔:

{"a": "a", "b": "a", "time": "20210210T10:10:00"} {"a": "b", "b": "b", "time": "20210210T11:10:00"}

这种格式Redshift无法正确解析,你需要改成以下两种标准格式之一:

  • 推荐:JSON Lines格式:每行单独存放一个JSON对象,示例:
    {"a": "a", "b": "a", "time": "20210210T10:10:00"}
    {"a": "b", "b": "b", "time": "20210210T11:10:00"}
    
  • JSON数组格式:把所有JSON对象包裹在一个数组中,示例:
    [{"a": "a", "b": "a", "time": "20210210T10:10:00"}, {"a": "b", "b": "b", "time": "20210210T11:10:00"}]
    

修正后的COPY命令

将参数改为小写的'auto',同时确保文件格式正确,最终命令如下:

COPY stTest 
FROM 's3://bucket/file.gz' 
credentials 'aws_access_key_id=x;aws_secret_access_key=y' 
json 'auto' 
gzip 
ACCEPTINVCHARS ' ' 
TRUNCATECOLUMNS 
TRIMBLANKS;

如果你的JSON字段名和表列名大小写不一致(比如JSON里是Time而表列是time),可以把json 'auto'换成json 'ignorecase',这样就能忽略大小写匹配字段与列。

内容的提问来源于stack exchange,提问作者Nir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 15:48:11