簡體   English   中英

在 Redshift COPY 命令中指定行分隔符

[英]Specify row delimiter in Redshift COPY command

我正在嘗試使用 COPY 命令將數據導入 Redshift。 不幸的是,數據沒有很好地清理,並且某些數據中有 CRLF 字符。 這會導致錯誤,因為它認為這是一條新記錄。

我已經在使用 DELIMITER 參數,但這是為每條記錄中的字段設置分隔符。 是否有類似的方法來指定分隔每條記錄的字符?

否。Redshift 期望 \n (0x0A) 作為記錄結束 (EOF),並且不處理 CRLF (0x0D 0x0A)。 我相信它只是將 CR 視為另一段輸入數據,但此信息不能插入 varchar 列以外的任何內容。 如果您的行只有 CR (0x0D),Redshift 根本不會看到 EOF 並合並行。

您將需要清理數據以刪除 CR 字符。 每條記錄都需要以換行符 NL (0x0A) 結尾。 (是的,LF 和 NL 是相同的 ascii 代碼,只是在不同的應用程序中有不同的名稱。)希望你可以刪除 CR,但我看到數據只有 CR 作為 EOF,你需要將它們更改為 NL這種情況下不只是刪除它們。

如果您的最后一列數據是 varchar,那么您可以(我相信)在將這些字符串加載到 Redshift 后從這些字符串中刪除 CR 字符。 否則,您的數據需要在進入 Redshift 之前進行修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM