如何在mysql中绕过无效的utf8字符串

时间:2016-11-20 06:44:37

标签: mysql utf-8

我有一个包含阿拉伯语文本数据的大文本文件。当我尝试将其加载到MySQL表中时,我收到错误Error code 1300: invalid utf8 character string。这是我到目前为止所尝试的:

LOAD DATA INFILE '/var/lib/mysql-files/text_file.txt'
IGNORE INTO TABLE tblTest
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n';

我试图忽略此错误,但它不起作用。我试过了LOCAL INFILE,但它也没有用。我的数据库是使用DEFAULT CHAR SET UTF8DEFAULT COLLATE utf8_general_ci创建的。文本文件为utf-8编码。

我不想要包含无效utf8字符的记录。那么如何加载数据而忽略包含这些无效字符的记录呢?

提前感谢!

2 个答案:

答案 0 :(得分:2)

顽皮角色的十六进制会有所帮助。

阅读所有文本,然后处理任何不良字符的可能方法:

  1. 阅读VARBINARYBLOB类型的列。

  2. 遍历行,尝试复制到VARCHARTEXT列。

  3. 另一个计划是使用utf8mb4而不是utf8。可能是坏字符是一个表情符号或中文字符,可以在utf8mb4中工作,但不能用于utf8。

答案 1 :(得分:2)

尝试使用MySQL 5.7.14时也有这个问题。

我回到了MySQL 5.6,这个问题就消失了