MySQL导入.CSV数据中文乱码的解决方式

 更新时间:2024年08月07日 11:45:34   作者:Eric-x  
当将xls或xlsx文件转换为CSV并导入数据库时,可能出现乱码,原因是编码格式不是UTF-8,解决方法是使用Notepad或记事本打开CSV文件,所以本文给大家介绍了MySQL导入.CSV数据中文乱码的解决方式,需要的朋友可以参考下

这是因为编码问题,我们将xls或者是xlsx转换为 CSV格式后,编码并不是UTF-8,导致存放到数据库的数据就会出现乱码问题

解决方式

选择csv文件,使用Notepad或者是记事本打开

然后设置编码格式为:UTF-8即可

拓展一:mysql导出scv文件乱码、蹿行

工作原因,常常不能实现完全的线上化(即,所有数据都在线上完成,不需要导入导出),而导出Excel常常比修炼成仙还慢,因此,我们将数据库文件导出到本地使用的时候,常常使用的方法的是导成CSV格式。而csv格式的也常常出现导出的中文乱码,或者蹿行等问题,从而陷入两难境地。老板要数据,你却导不出来,急死人了。

1.问题:我们原本要把如左图所示的数据库中的数据导出成他原本的样子,无奈成了右边的乱七八糟的东西;

2.解决:

a:原本怎么导出为csv的还是怎么导;

b:选中你导出的csv文件,右键选择打开方式为【记事本】;

c:文件-->另存为-->编码选择UTF-8-->保存;(文件名和保存类型都不需要改,点击保存之后会提示该文件已存在,是否替换,选择【是】就好)

d:打开刚刚保存的文件,只是这次选择打开方式为excel,然后数据就会像你数据库里的样子一样,干干净净(如下图)。

拓展二:

导入源数据

LOAD DATA LOCAL INFILE 'E:\\stocks.csv' 
INTO TABLE `stock_info_tb` 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n'

乱码结果

修改SQL

LOAD DATA LOCAL INFILE 'E:\\stocks.csv' 
INTO TABLE `stock_info_tb` CHARACTER SET utf8
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n'

这个utf8是根据导入的csv文件编码来决定的,可以通过文本编辑器把要导入的数据修改一个自己喜欢的编码,然后这个一致就OK。
这样修改后,仍然是乱码,有些崩溃的。

查看与修改表信息

表对中文是否支持运行:

SHOW FULL COLUMNS FROM `stock_info_tb`;  
或
SHOW CREATE TABLE `stock_info_tb`;

结果显示:

CREATE TABLE `stock_info_tb` (
  `type` varchar(10) CHARACTER SET latin1 DEFAULT NULL,
  `bourse` varchar(2) CHARACTER SET latin1 DEFAULT NULL,
  `stock_id` int(11) NOT NULL,
  `stock_name` varchar(10) CHARACTER SET latin1  DEFAULT NULL,
  PRIMARY KEY (`stock_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

发现要导入来的type,stock_name两个列为latin1字符集,修改为utf8为:

/*DDL 信息*/------------
CREATE TABLE `stock_info_tb` (
  `type` varchar(10) COLLATE utf8_bin DEFAULT NULL,
  `bourse` varchar(2) CHARACTER SET latin1 DEFAULT NULL,
  `stock_id` int(11) NOT NULL,
  `stock_name` varchar(10) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`stock_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

再运行

LOAD DATA LOCAL INFILE 'E:\\stocks.csv' 
INTO TABLE `stock_info_tb` CHARACTER SET utf8
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n'

结果

喜欢这个样的结果。

以上就是MySQL导入.CSV数据中文乱码的解决方式的详细内容,更多关于MySQL导入.CSV中文乱码的资料请关注脚本之家其它相关文章!

相关文章

  • mysql 的load data infile

    mysql 的load data infile

    前些日子在开发一个舆情监测系统,需要在一个操作过程中往数据表里插入大量的数据,为了改变以往生硬地逐条数据插入的笨办法,也为了提高执行效率,决定用load data infile来执行数据插入。
    2009-05-05
  • mysql 8.0.16 winx64.zip安装配置方法图文教程

    mysql 8.0.16 winx64.zip安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.16 winx64.zip安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Linux之MySQL主从复制方式

    Linux之MySQL主从复制方式

    本文介绍了MySQL的主从复制原理和配置步骤,包括主从库的配置、同步操作和异常处理,主从复制通过二进制日志实现数据同步,适用于读写分离和备份等场景,配置过程中需要注意server_id的唯一性,确保主从同步的顺利进行
    2024-11-11
  • MySQL8.x使用GRANT为用户赋权时报错的解决

    MySQL8.x使用GRANT为用户赋权时报错的解决

    这篇文章主要介绍了MySQL8.x使用GRANT为用户赋权时报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • mysql登录时报socket找不到的问题及解决

    mysql登录时报socket找不到的问题及解决

    这篇文章主要介绍了mysql登录时报socket找不到的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • IDEA连接mysql又报错!Server returns invalid timezone. Go to tab and set serverTimezone  prope的问题

    IDEA连接mysql又报错!Server returns invalid timezone. Go to tab an

    这篇文章主要介绍了IDEA连接mysql又报错!Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope问题,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2020-05-05
  • 关于在sql中使用order by实现排序出错问题

    关于在sql中使用order by实现排序出错问题

    这篇文章主要介绍了关于在sql中使用order by实现排序出错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MySql存储过程循环的使用分析详解

    MySql存储过程循环的使用分析详解

    这篇文章主要介绍了MySql存储过程循环的使用分析详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • mysql 从 frm 文件恢复 table 表结构的3种方法【推荐】

    mysql 从 frm 文件恢复 table 表结构的3种方法【推荐】

    这篇文章主要介绍了mysql 从 frm 文件恢复 table 表结构的3种方法 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • MySQL B-tree与B+tree索引数据结构剖析

    MySQL B-tree与B+tree索引数据结构剖析

    这篇文章主要介绍了MySQL B-tree与B+tree索引数据结构剖析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08

最新评论