2017-09-26 67 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