我正在尝试使用提供json路径的复制命令将json文件下面的内容加载到redshift中。我无法加载该文件并出现错误,我从以前的帖子中了解到它可能不支持','数组结尾。无需任何预处理就可以加载文件吗?
{
"users": [
{
"id": 1111,
"name": "ABCD"
},
{
"id": 2222,
"name": "PQRS"
},
{
"id": 3333,
"name": "WXYZ"
}
]
}
答案 0 :(得分:0)
您当前无法使用COPY
加载此文件。 但是,我们最近引入了使用Redshift Spectrum查询嵌套数据的功能。您可以使用此功能将数据插入Redshift表。
这是一个例子:
{
"users": [
{ "id": 1111,
"name": "ABCD" },
{ "id": 2222,
"name": "PQRS" },
{ "id": 3333,
"name": "WXYZ" }
]
}
aws s3 cp ~/nested_data.json s3://my-bucket/nested_data/nested_data.json
DROP TABLE IF EXISTS spectrum.nested_simple;
CREATE EXTERNAL TABLE spectrum.nested_simple
(users array<struct<id:int, name:varchar(20)>> )
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://my-bucket/nested_data/'
;
SELECT u.id
,u.name
FROM spectrum.nested_simple c
INNER JOIN c.users u ON true
;
-- id | name
--------+------
-- 1111 | ABCD
-- 2222 | PQRS
-- 3333 | WXYZ
推荐阅读我们的嵌套数据教程。 https://docs.aws.amazon.com/redshift/latest/dg/tutorial-query-nested-data.html