使用 json 的亚马逊 redshift 副本遇到问题
Posted
技术标签:
【中文标题】使用 json 的亚马逊 redshift 副本遇到问题【英文标题】:amazon redshift copy using json having trouble 【发布时间】:2017-02-06 11:38:08 【问题描述】:我创建了一个名为 test3 的简单表
create table if not exists test3(
Studies varchar(300) not null,
Series varchar(500) not null
);
我得到了一些 json 数据
"Studies": [
"studyinstanceuid": "2.16.840.1.114151",
"studydescription": "Some study",
"studydatetime": "2014-10-03 08:36:00"
],
"Series": [
"SeriesKey": "abc",
"SeriesInstanceUid": "xyz",
"studyinstanceuid": "2.16.840.1.114151",
"SeriesDateTime": "2014-10-03 09:05:09"
,
"SeriesKey": "efg",
"SeriesInstanceUid": "stw",
"studyinstanceuid": "2.16.840.1.114151",
"SeriesDateTime": "0001-01-01 00:00:00"
],
"ExamKey": "exam-key",
这是我的 json_path
"jsonpaths": [
"$['Studies']",
"$['Series']"
]
json数据和json路径都上传到s3。
我尝试在 redshift consule 中执行以下复制命令。
copy test3
from 's3://mybucket/redshift_demo/input.json'
credentials 'aws_access_key_id=my_key;aws_secret_access_key=my_access'
json 's3://mybucket/redsift_demo/json_path.json'
我收到以下错误。任何人都可以请帮助卡在这个问题上一段时间了。
Amazon](500310) Invalid operation: Number of jsonpaths and the number of columns should match. JSONPath size: 1, Number of columns in table or column list: 2
Details:
-----------------------------------------------
error: Number of jsonpaths and the number of columns should match. JSONPath size: 1, Number of columns in table or column list: 2
code: 8001
context:
query: 1125432
location: s3_utility.cpp:670
process: padbmaster [pid=83747]
-----------------------------------------------;
1 statement failed.
执行时间:1.58s
【问题讨论】:
s3 凭据的问题与 redshift 无关,我能够解决这个问题。 【参考方案1】:Redshift 的错误具有误导性。问题是您的输入文件格式错误:在最后一个 JSON 条目之后有一个额外的逗号。
如果您将"ExamKey": "exam-key",
更改为"ExamKey": "exam-key"
,则Copy
成功
【讨论】:
ketan 感谢您的评论我发现了错误,这是我的错误,我的 s3 凭据错误,基本上是使用将文件上传到 s3 存储桶的 s3cmd 和副本中的 s3 凭据不匹配.一旦我修复了上述错误就消失了。 但您仍然必须按照我的建议删除多余的逗号。否则copy
将失败。以上是关于使用 json 的亚马逊 redshift 副本遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
基准 Amazon Redshift JSON_EXTRACT_PATH_TEXT