Mysql语句导出成excel时解决科学计数法的情况

普通情况导出excel

将结果直接导出到/tmp/result.xls

1
mysql -h127.0.0.1 -u用户名 -p密码 -e "具体SQL命令" database名 > /tmp/result.xls	#请注意单引号双引号

解决科学计数法

有时候数据库里会有比较长的数字,比如订单号或者身份证号,但是由于excel的操蛋设定,长数字在导出后在Excel中打开后却是用科学计数法显示的,过长的话,后面几位数字全都转换为0了,解决这样问题的方法就是引入CONCAT

比如我要从sdb_b2c_delivery这个tables里查询两个时间戳之间的情况,将结果导出到/tmp/result.xls

1
mysql -h127.0.0.1 -u用户名 -p密码 -e 'SELECT CONCAT("",对应的列名1),CONCAT("",对应的列名2) FROM sdb_b2c_delivery WHERE t_begin >= 1543593600 AND t_begin <= 1546271999;' database名 > /tmp/result.xls	#请注意单引号双引号

但是这样导出来的结果还是科学计数法,不过可以修改单元格格式,改成“数值”,然后把小数位数改成0即可。
akb48

解决中文乱码的问题

有时候数据库里会有中文,但是导出的时候发现excel看到的中文全是乱码,解决这样问题的方法需要加上--default-character-set=utf8,比如:

1
mysql -h127.0.0.1 -u用户名 -p密码 --default-character-set=utf8 -e 'SELECT CONCAT("",对应的列名1),CONCAT("",对应的列名2) FROM sdb_b2c_delivery WHERE t_begin >= 1543593600 AND t_begin <= 1546271999;' database名 > /tmp/result.xls	#请注意单引号双引号

result.xls直接使用notepad++打开,然后将excel列的格式设置为文本,再粘贴就能得到正确的表格了。

参考资料

https://www.jianshu.com/p/2c8bfbfcd288
https://qianrong.me/sql/2.html

akb48

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------