使用COPY命令将数据从JSON文件复制到Redshift

时间:2014-12-05 10:08:13

标签: json copy amazon-redshift jsonpath

我尝试使用COPY命令和JSONPath将JSON文件加载到Redshift中。根据我的理解,对于JSON文件中的每条记录,COPY命令会为SQL生成一条记录。

我需要从JSON中的一条记录为SQL生成多个记录,但我不知道该怎么做。

这是一个例子。假设我们有以下JSON文件:

{
    {
        "id": 1,
        "value": [1, 2, 3, 4],
        "other": "ops"
    },
    {
        "id": 2,
        "value": [5, 6, 7, 8]
    }
}

我想生成以下行来存储在SQL中:

id value
1  1
1  2
1  3
1  4
2  5
2  6
2  7
2  8

JSONPath文件应该是什么样的?是否可行?

related SO post中,解决方案是在加载到Redshift之前以某种方式生成具有正确模式的数据。我可以预处理JSON文件以某种方式将其展平并将其存储回S3。但这使事情变得复杂很多。

另一个相关的问题是,如果一个记录中缺少一个字段(例如上述示例的第二个记录中的"other"字段),如何设置默认值?

1 个答案:

答案 0 :(得分:2)

您无法在复制命令中执行转换。使用ETL工具而不是直接复制到RedShift。使用JSON格式后,将根据表DDL分配默认值。