2015-02-11 65 views
0

红移我具有低于JSON数据在S3:错误而从S3复制JSON数据使用COPY命令

{ "message": "{\"a\":\"b\",\"c\":\"d\"}"} 

和jsonpath:

{ 
    "jsonpaths": [ 
     "$.message.a" 
    ] 
} 

我使用下面复制命令加载红移表。

copy test.table1 from 's3://bucket1/test.gz' credentials 'aws_access_key_id=<>;aws_secret_access_key=<>' json 's3://bucket1/jsonpath.json' GZIP ; 

但它失败,错误。

JSONPath格式无效:成员不是对象。

+0

这个例子可能有所帮助:https://forums.aws.amazon.com/thread.jspa?messageID=538556 – 2015-02-11 14:25:01

+0

上面的反斜杠是否出现在S3文件中?如果是,为什么你需要它们? – 2015-02-15 06:45:23

回答

1

Redshift复制错误意味着它没有在数据文件的“消息”对象中看到“a”键。

引用你的“消息”对象值在你的JSON数据中引起你的问题。您的JSON应该是这样的:

{ "message": {"a":"b","c":"d"}}

逃离报价不应该是必要的,所以我拿出反斜杠。留下它们可能有用,但我没有测试它。