这是因为编码问题,我们将xls或者是xlsx转换为 CSV格式后,编码并不是UTF-8,导致存放到数据库的数据就会出现乱码问题
选择csv文件,使用Notepad或者是记事本打开
然后设置编码格式为:UTF-8即可
工作原因,常常不能实现完全的线上化(即,所有数据都在线上完成,不需要导入导出),而导出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中文乱码的资料请关注插件窝其它相关文章!