2017-05-31 131 views
0

我有一堆的CSV文件,我碰到哪裏很奇怪的情況下,來到」字符例如MySQL的錯誤代碼:1300 UTF8無效的字符串:「」與「 」 UTF8 Unicode中的前「Unicode字符的盈

Tom;\Éscobar;123 

和通過做一個大容量插入時:

LOAD DATA LOCAL INFILE 'test.csv' 
INTO TABLE TEST_TABLE 
CHARACTER SET 'utf8' 
FIELDS TERMINATED BY ';' 
ENCLOSED BY '"'; 

錯誤:無效UTF8字符串: '' 被拋出。 我不知道這是MySQL LOAD DATA中的一個錯誤,還是我在這裏丟失了一些東西。

MySQL-Version 5.7.16 
+0

這聽起來像文件的編碼錯誤。你能得到該行的十六進制嗎? –

+0

原始的行是:\朱坤在十六進制它的5c67315764。我可以用任何組合\ + [某個unicode字符]重現它。該文件是在UTF8編碼 –

+0

嗯......沒有'CHARACTER SET'對待'5c67315764'爲'\'朱坤。 –

回答

0

如果你能弄清楚模式是什麼,...

  1. 負載CSV到VARBINARYBLOB列(S)。
  2. 運行SQL,可能使用了REPLACE() function`,以清理數據(除去blackslashes)。
  3. 做合適的ALTER,大概MODIFY COLUMN ... VARCHAR(...) CHARACTER SET utf8mb4把它轉換爲文本格式。