普通情况导出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即可。
解决中文乱码的问题
有时候数据库里会有中文,但是导出的时候发现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