2017-03-06 48 views
0

我們在源S3文件的字段中有15個嵌入換行符。 Redshift目標表中的字段大小爲VARCHAR(5096)。源文件中的字段長度爲5089字節。根據copy命令的ESCAPE選項的要求,我們正在使用反斜槓\轉義15個換行符中的每個字符。我們對ESCAPE選項的期望是,在Redshift中加載目標之前,我們在每個換行符前插入的反斜槓\將被忽略。然而,當我們使用copy命令我們正在紅移複製命令中的嵌入換行字符問題

err_code了ESCAPE選項:1204 - 字符串長度超過DDL長度「

有沒有辦法在其中加入反斜槓\字符都沒有。計數目標列載荷紅移

注:當我們用ES截斷的文件中的上述源字段4000字節和前換行符插入反斜槓\,所述copy命令CAPE選項已成功加載Redshift中的字段。另外,反斜槓\字符未按預期在Redshift中加載。

回答

0

我們對上述問題的理解不正確。我們插入的反斜槓「\」不會導致錯誤「err_code:1204 - 字符串長度超過DDL長度」。使用copy命令的「escape」選項實際上不會將插入的反斜槓字符計入目標限制,並且也會正確地將它們從裝入的值中刪除。

面臨的實際問題是我們試圖加載的一些字符是多字節UTF8字符。因爲我們錯誤地假設它們的長度爲1個字節,所以目標字段的大小被證明是不夠的。我們將目標字段的長度從varchar(5096)增加到varchar(7096),之後所有數據都成功加載。

0

你冷得延長你的VARCHAR長度以允許更多的字符。

或者,您可以使用TRUNCATECOLUMNS選項儘可能地加載而不會產生錯誤。

+0

謝謝John!但我們面臨的實際問題是不同的。我在回答中提到了細節。 – AnkushSharma