2017-04-14 69 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文件