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

  • A+
所属分类:SQL技巧

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

当将xls或xlsx文件转换为CSV并导入数据库时,可能出现乱码,原因是编码格式不是UTF-8,解决方法是使用Notepad或记事本打开CSV文件,所以本文给大家介绍了MySQL导入.CSV数据中文乱码的解决方式,需要的朋友可以参考下。

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

解决方式

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

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

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

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

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

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

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

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

2.解决:

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

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

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

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

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

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

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

拓展二:

导入源数据

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

1
2
3
4
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'

乱码结果

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

修改SQL

1
2
3
4
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。
这样修改后,仍然是乱码,有些崩溃的。

查看与修改表信息

表对中文是否支持运行:

1
2
3
SHOW FULL COLUMNS FROM `stock_info_tb`; 
SHOW CREATE TABLE `stock_info_tb`;

结果显示:

1
2
3
4
5
6
7
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为:

1
2
3
4
5
6
7
8
/*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

再运行

1
2
3
4
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数据中文乱码的解决方式!

喜欢这个样的结果。

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

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

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

  • 我的微信
  • weinxin
  • 我的知识星球
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: