2017-09-26 59 views
0

当通过COPY命令将数据从S3加载到Redshift时,如果文件中的任何记录包含不正确的时间戳,则复制失败。我已将maxerror作为1000传递给COPY命令,但仍然失败。当时间戳不正确时,S3中的红移COPY失败

但是,在后续重试时,相同的命令起作用。虽然它无法加载损坏的记录。

这是我收到的错误:

ERROR: Assert 
DETAIL: 
    ----------------------------------------------- 
    error: Assert 
    code:  1000 
    context: status == 0 - timestamp: '-6585881136298398395' 
    query:  30903 
    location: cg_util.cpp:1063 
    process: query1_69 [pid=25674] 
    ----------------------------------------------- 

AWS cli version : aws-cli/1.10.56 Python/2.7.12 Linux/4.4.19-29.55.amzn1.x86_64 botocore/1.4.46 

有没有谁面临着同样的问题,任何人吗?你是如何解决它的?

+0

一个技巧,你可以do是将时间戳字段作为字符串加载,然后使用UPDATE命令根据字符串填充时间戳列。 –

+0

@JohnRotenstein我很好与腐败的记录(包含错误的时间戳记录)没有得到加载到红移。但其他记录应该加载,并且我认为在复制命令中将maxerror参数设置为某个值应该可以处理这个问题。但我没有看到行为一致,有时数据加载,有时会失败。 – Asish

回答

0

追加

ACCEPTANYDATE dateformat 'auto' 

在您的副本声明。

ACCEPTANYDATE dateformat (AWS文档)

这会ATLEAST试图强制执行您的副本语句不会失败。尽管如此,一些不支持的格式可能是空的(正如你所提到的,我很好与腐败记录(记录包含错误的时间戳)没有得到加载到红移。但其他记录应该加载

+0

我正在使用timeformat'auto'。按照该文件,aws建议使用ACCEPTANYDATE和dateformat,而不是timeformat。谢谢,会试试看。 – Asish

+0

谢谢:)此外,做upvote并让其他人知道它是否工作。 –

+0

当然,我仍然有一个疑问。为什么maxerror不处理这个问题?,你是否面对与maxerror完全相同的问题? – Asish