解决ERROR 1300 (HY000): Invalid utf8 character string: ' '

邹新颖 2018-11-17 10:51:09
首先声明,此贴为转发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
...全文
3640 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
邹新颖 2020-03-29
  • 打赏
  • 举报
回复
没错,第一个是删除文件中的" 具体命令为 sed -i 's/"//g' filename 第二个是删除文件中的\ 具体命令为 sed -i 's/\\//g' filename
lmw0320 2019-03-27
  • 打赏
  • 举报
回复
后面的解决办法没看懂。。
1. 具体命令是#前的两句话?
2. 你把文件中的特殊字符删除了,那文件怎么用? 因为原始文件中,可能存在日期型数据,正好用的\等符号。。

492

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧