我有一個 csv 檔案,其中一列包含以下值:
Some words: camión, coche, moto
復制陳述句是:
COPY schema.table
FROM 's3://path/file.csv'
IAM_ROLE 'arn'
delimiter ',' IGNOREHEADER 1 FORMAT AS CSV QUOTE AS '"' ;
它失敗了,因為它將單詞交換camión為cami..n:
Some words: cami..n, coche, moto
因此,它超過了DDL定義的長度。
然后我試圖改變encoding的copy:
COPY schema.table
FROM 's3://path/file.csv'
IAM_ROLE 'arn'
delimiter ',' IGNOREHEADER 1 ENCODING AS UTF16 FORMAT AS CSV QUOTE AS '"' ;
然后它提出: . Bad UTF16 hex sequence: 2255736572222C2252616E6B696E6720 6E616D65222C2254797065222C224D6F
有什么我想念的嗎?csv to utf-16在嘗試使用其他編碼時,我還更改了編碼:
csv = df.to_csv(index=False, header=True, quoting=csv_set.QUOTE_ALL, sep=",",
encoding="utf-16")
uj5u.com熱心網友回復:
DDL 長度的問題是 Redshift 將 varchar 存盤在多位元組 UTF8 中,對于非 ascii 字符,它在 varchar 長度中占用超過一個位元組。在這些情況下,函式 octet_length() 可用于查找比字符長度長的字串的位元組長度。在處理非 ascii 字串時,需要調整 DDL 以考慮這些額外的位元組。
源檔案看起來也是 UTF8 格式,因此使用 UTF16 編碼讀取將不起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346707.html
標籤:蟒蛇-3.x 亚马逊网络服务 编码 亚马逊红移 utf
