2017-04-14 373 views
5

當我想通過導入.csv文件到MySQL數據庫:MySQL的無效UTF8字符串導入CSV表

load data local infile 'C:\\Users\\t_lichtenberger\\Desktop\\tblEnvironmentLog.csv' 
into table tblenvironmentlog 
character set utf8 
fields terminated by ';' 
lines terminated by '\n' 
ignore 1 lines; 

.csv文件看起來像: enter image description here

但我得到的下面的錯誤,我不能解釋爲什麼:

Error Code: 1300. Invalid utf8 character string: 'M' 

有什麼建議嗎?

+0

什麼是_ON的EXPORT_的設置? –

回答

5

看看爲出口的設置者。尋找「UTF-8」。

This暗示「截斷的文本」是由未被編碼爲utf8mb4的數據引起的。外面的MySQL,「尋找‘UTF-8’(內,MySQL和UTF8和utf8mb4工作同樣適用於所有歐洲字符集,所以ü不應該是一個問題。

如果它被導出爲‘CP1252’ (或任意數量的編碼的),用於ü字節不會是有效的utf8mb4,導致截斷

如果這個分析是正確的,有兩種解決方案:

計劃A:導出爲UTF-8

計劃B:導入爲latin1(您不需要要更改列/表定義,只需要LOAD DATA。)

1

這是抱怨'M',但我認爲它在München和實際有問題的字符是下一個,變音'ü'

一個簡單的測試方法是嘗試加載只有前兩行的文件&看看是否有效。然後添加第三行,再次嘗試&看看是否失敗。

如果您不能或不想在數據中替換這些特殊字符,那麼您需要開始調查在CSV文件,數據庫,表格,列,工具等中配置的字符集。 。

你使用MySQL 5.7或以上版本嗎?然後,一個簡單的嘗試就是在您的load data命令中更改爲character set utf8mb4

有關類似問題,請參閱How MySQL 5.7 Handles 'utf8mb4' and the Load Data Infile

另見:

import geonames allCountries.txt into MySQL 5.7 using LOAD INFILE - ERROR 1300 (HY000)

Trouble with utf8 characters; what I see is not what I stored

「Incorrect string value」 when trying to insert UTF-8 into MySQL via JDBC?

1

只需在文本編輯器(如Nodepad ++)

打開CSV文件並更改文件編碼成UTF-8

然後導入CSV文件

相關問題