JSON 文件未加载到 redshift

问题描述 投票:0回答:2

我在 redshift 中使用复制命令加载 JSON 对象时遇到问题,我收到以下 JSON 格式的文件,该文件在尝试使用复制命令时失败,但是当我将 json 文件调整到底部时它可以工作。这不是一个理想的解决方案,因为我不允许修改 JSON 文件

这个效果很好:

{
   "id": 1,
   "name": "Major League Baseball"
}
{
   "id": 2,
   "name": "National Hockey League"
}

这不起作用(注意额外的方括号)

[
{"id":1,"name":"Major League Baseball"},
{"id":2,"name":"National Hockey League"}
]

这是我的json路径

{
    "jsonpaths": [
        "$['id']",
        "$['name']"
    ]
}
sql json amazon-redshift
2个回答
1
投票

COPY
命令的问题是它并不真正接受有效的JSON文件。相反,它需要一个每行 JSON,这在文档中显示,但没有明显提及。

因此,每一行都应该是有效的 JSON,但完整文件却不是。这就是为什么当您修改文件时,它会起作用。


0
投票

问题出在括号上。以下是假设整个文件小于 16mb 的解决方法:

SET json_parse_truncate_strings=ON; --not necessarily needed but helpful

create table temptable(entirefile super);

copy temptable
from 's3://bucket/file.json'
iam_role '...'
format json 'noshred';

create mytable as
select data from temptable t, t.entirefile data;
© www.soinside.com 2019 - 2024. All rights reserved.