我想通过以下方式将.csv文件导入MySQL数据库:
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文件看起来像:
但我得到了以下错误,我无法解释为什么:
Error Code: 1300. Invalid utf8 character string: 'M'
型
有什么建议吗?
5条答案
按热度按时间mm5n2pyu1#
我尝试的其他方法都不起作用,包括确保我的.csv是用UTF-8编码保存的。
这个办法奏效了:
使用
LOAD DATA LOCAL INFILE
时,设置CHARACTER SET latin1
而不是CHARACTER SET utf8mb4
,如https://dzone.com/articles/mysql-57-utf8mb4-and-the-load-data-infile所示下面是一个对我有效的完整示例:
字符串
bjp0bcyl2#
查看 * 导出 * 的设置。查找“UTF-8”。
This表明“截断文本”是由于数据没有被编码为utf8 mb 4造成的。在MySQL外部,“查找“UTF-8”。(在MySQL内部,utf8和utf8 mb 4对所有欧洲字符集都同样有效,所以
ü
应该不是问题。如果它被导出为“cp 1252”(或任何一种编码),那么
ü
的字节对于utf8 mb 4将是无效的,从而导致截断。如果这个分析是正确的,那么有两个解决方案:
方案A:导出为
UTF-8
。计划B:导入为
latin1
。(您不需要更改列/表定义,只需更改LOAD DATA
。)hrysbysz3#
只需在文本编辑器(如Nodepad++)中打开csv文件即可
并将文件编码更改为UTF-8
然后导入你的csv文件
epggiuax4#
它在抱怨
'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的
尝试通过JDBC将UTF-8插入MySQL时出现“错误的字符串值”?
1qczuiv05#
把utf8改成utf8mb4就行了
第一个月