簡體   English   中英

字符串包含無效或不受支持的 UTF8 代碼點。 錯誤的 UTF8 十六進制序列:

[英]String contains invalid or unsupported UTF8 codepoints. Bad UTF8 hex sequence:

團隊,我使用的是 redshift 版本 *(8.0.2)。 使用 COPY 命令加載數據時,出現錯誤:-“字符串包含無效或不受支持的 UTF8 代碼點,錯誤的 UTF8 十六進制序列:bf(錯誤 3)”。 似乎 COPY 試圖將 UTF-8“bf”加載到 VARCHAR 字段中。 根據 Amazon redshift,此錯誤代碼 3 定義如下:

error code3: 
The UTF-8 single-byte character is out of range. The starting byte must not be 254, 255
or any character between 128 and 191 (inclusive).

亞馬遜建議將此作為解決方案 - 我們需要將 go 字符替換為有效的 UTF-8 代碼序列或刪除該字符。

你能幫我如何用有效的 UTF-8 代碼替換字符嗎?

當我在 PG-ADMIN 中檢查數據庫屬性時,它顯示編碼為 UTF-8。

請指導我如何替換輸入分隔文件中的字符。

謝謝...

聽起來你的文件編碼可能不是utf-8。 您可能會嘗試我們有時使用的這種技術

cat myfile.tsv| iconv -c -f ISO-8859-1 -t utf8 > myfile_utf8.tsv

我在加載TPC-DS數據集進行實驗時遇到了RedShift中的這個問題。

以下是我通過AWS找到的文檔和論壇聊天內容: https//forums.aws.amazon.com/ann.jspa? annID = 2090

以下是可用於解決數據轉換錯誤的顯式命令: http//docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-acceptinvchars

您可以通過聲明ACCEPTINVCHARS在COPY階段明確替換無效的UTF-8字符或忽略它們。

嘗試這個:

copy table from 's3://my-bucket/my-path
credentials 'aws_iam_role=<your role arn>'
ACCEPTINVCHARS 
delimiter '|' region 'us-region-1';

Warnings:
Load into table 'table' completed, 500000 record(s) loaded successfully.
Load into table 'table' completed, 4510 record(s) were loaded with replacements made for ACCEPTINVCHARS. Check 'stl_replacements' system table for details.

0 rows affected
COPY executed successfully

Execution time: 33.51s

對於許多人將CSV加載到數據庫中,他們從使用Excel的人那里獲取文件,或者他們可以訪問Excel。 如果是這樣,這個問題很快就會解決:

  1. 首先使用“ Save As將文件保存到Excel之外,然后選擇CSV UTF-8 (Comma Delimited) (*.csv)格式,請求/培訓那些為您提供使用此導出格式的文件。 請注意,默認情況下,許多人使用CSV (Comma delimited) (*.csv)格式導出到csv,並且存在差異。
  2. 將csv加載到Excel中,然后立即另存為UTF-8 csv格式。

當然,它不適用於Excel無法使用的文件,即。 大於100萬行等等。然后我會使用mike_pdb的iconv建議

注意到 Athena 外部表能夠解析 Redshift 復制命令無法解析的數據。 當遇到 - String contains invalid or unsupported UTF8 codepoints Bad UTF8 hex sequence: 8b (error 3) 時,我們可以使用以下替代方法。

如果要將數據加載到 redshift 數據庫 db2 和表 table2,請按照以下步驟操作。

  • 准備好一個可以訪問 S3 的 Glue 爬蟲 IAM 角色。

  • 運行爬蟲。

  • 在 Athena 中驗證由 Glue 爬蟲創建的表和數據庫,比如外部 db1_ext、table1_ext

  • 登錄到 redshift 並通過使用以下命令創建 Redshift 模式 (db1_schema) 來創建與 Glue Catalog 的鏈接。

    從數據目錄數據庫“db1_ext”IAM_ROLE“arn:aws:iam:::role/my-redshift-cluster-role”創建外部模式 db1_schema;

  • 從外部表加載 INSERT INTO db2.table2 (SELECT * FROM db1_schema.table1_ext)

暫無
暫無

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

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