考虑以下 JSON 数据结构
[{"a":1,"b":2}
,{"a":3,"b":4}
,{"a":5,"b":6}
]
我想使用 Redshift COPY 命令复制此内容。
我认为 JsonPath 是需要的。到目前为止我最接近的是:
{
"jsonpaths":[
"$[0].a",
"$[0].b",
]
}
但是,这仅复制第一行。我尝试的任何其他操作都是给出 Member is not an object 错误或不是有效的 JsonPath。
COPY 示例 - Amazon Redshift 中显示的示例 JSON 文件建议每条记录都应包含在
{...}
中,没有任何内容“高于”该级别。
您的示例(上面)将整个文件包裹在
[...]
中,这可能是导致问题的原因。
如果移除
[...]
外层,它应该可以正常工作。
如果数组中的 json 超过 16mb,则中断
create temp table js(data super);
copy js
from 's3://bucket/file.json'
iam_role '...'
format as json 'noshred';
select o from js j, j.data o;