如何忽略错误,但不跳过redshift copy命令中的行

问题描述 投票:0回答:1

我在S3中有一个嵌套的json作为源文件,我正在尝试将此文件复制到redshift中。我的问题如下,

  1. 我使用MAXERROR-我需要跳过某些错误,因为在某些情况下源文件缺少某些字段,而在其他情况下则具有这些字段
  2. 我使用JSONPATH文件-选择要复制到redshift的字段
  3. 表中的所有列都是varchar

显然,由于我使用的是maxerror,所以复制命令成功执行,但是表中有0条记录。这是我的复制命令

COPY public.table(col1,col2,col3,col4,col5,col6)
from 's3://bucket/filename'
credentials 'redshift'
format as JSON 'jsonpathfile.json'
timeformat 'YYYY-MM-DDTHH:MI:SS'
EMPTYASNULL ACCEPTANYDATE ACCEPTINVCHARS TRUNCATECOLUMNS maxerror 100 ;

如果我检查到stl_load_errors,它会一直说

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

这是否意味着复制命令甚至无法找到一个适合jsonpath文件的对象?这绝对是不正确的。我推断了输入文件的架构以设计jsonpath文件。

amazon-s3 amazon-redshift
1个回答
0
投票

这里是COPY Examples - Amazon Redshift的示例:

copy category
from 's3://mybucket/category_object_paths.json'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
json 's3://mybucket/category_jsonpath.json';

jsonpath文件的路径已完全指定,而您的示例仅引用了文件名。

尝试指定以s3://开头的完整路径,看看是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.