【发布时间】:2019-05-15 01:49:27
【问题描述】:
我正在使用 COPY 命令将 JSON 数据集从 S3 加载到 Redshift 表。数据正在部分加载,但它会忽略缺少数据(键值/数组)的记录,即在下面的示例中,只会加载第一条记录。
查询:
从 's3://mybucket/address.json' 复制地址
凭证'aws_access_key_id=XXXXXXX;aws_secret_access_key=XXXXXXX' 最大错误为 250
json 's3:/mybucket/address_jsonpath.json';
我的问题是如何从 address.json 加载所有记录,即使某些记录缺少键/数据,类似于下面的示例数据集。
JSON 示例
{
"name": "Sam P",
"addresses": [
{
"zip": "12345",
"city": "Silver Spring",
"street_address": "2960 Silver Ave",
"state": "MD"
},
{
"zip": "99999",
"city": "Curry",
"street_address": "2960 Silver Ave",
"state": "PA"
}
]
}
{
"name": "Sam Q",
"addresses": [ ]
}
{
"name": "Sam R"
}
对于 JSON 数据集,FILLRECORD 是否有替代方案?
我正在寻找可以在 Redshift 表中加载所有上述 3 条记录的实现或解决方法。
【问题讨论】:
-
您的
address_jsonpath.json文件内容对于提供答案非常重要。 -
@RedBoy 包含了 jsonpath 文件。
-
我稍微调整了您的示例 JSON 以使其更简单。例如,您将未键入的对象作为 name 的值,我将其转换为纯字符串值。