使用复制命令将Json文件加载到redshift

时间:2018-08-20 16:07:47

标签: json amazon-redshift

我正在尝试使用提供json路径的复制命令将json文件下面的内容加载到redshift中。我无法加载该文件并出现错误,我从以前的帖子中了解到它可能不支持','数组结尾。无需任何预处理就可以加载文件吗?

{
"users": [
    {
        "id": 1111, 
        "name": "ABCD"
    }, 
    {
        "id": 2222, 
        "name": "PQRS"
    }, 
    {
        "id": 3333, 
        "name": "WXYZ"
    }
  ]
}                         

1 个答案:

答案 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