首先声明,此贴为转发http://www.zhimengzhe.com/linux/187669.html的帖子。
其次说明,我用的是linux操作系统mysql 5.7,在导入数据的时候产生了如下错误
ERROR 1300 (HY000): Invalid utf8 character string: ’ ’
在论坛上搜寻了n久,差不多都是将编码修改为utf8的思路,但是没有用,也试过将csv文件改为txt文件,也没有用,最后找到这个帖子,按照步骤走,发现最后导表成功。
具体操作过程:
在load csv 进mysql的时候,报这个错,苦恼了很长时间,网上搜索不到答案。
mysql> load data infile ‘/home/hdh/8_sr/8_45.csv’ into table xizang.fp45 fields terminated by ‘,’ escaped by ‘"’ lines terminated by ‘\r\n’;
解决方案:
1.查看字符集,Linux, 数据库,表
mysql> show variables like ‘character%’;±-------------------------±----------------------------+| Variable_name | Value |±-------------------------±----------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 || character_sets_dir | /home/mysql/share/charsets/ |±-------------------------±----------------------------+8 rows in set (0.01 sec)
都是utf8,没有问题,
2.只能对这个文件进行特殊字符的清理了,一般遇到这个都是因为字符中间多了“\” 转义字符。
一般遇到特殊字符的时候会提示多少行,什么字符导致的出错,但是这个“\”,不会有这么详细的提示。
对这个文件 sed -i ‘s/"//g’ filename #删除文件中的"
sed -i ‘s/\//g’ filename #删除文件中的\
重新load ok