德克云技术联盟

标题: MySQL数据导出到Excel [打印本页]

作者: 李臻宇    时间: 2015-10-30 14:20
标题: MySQL数据导出到Excel
本帖最后由 李臻宇 于 2015-10-30 14:21 编辑


最近有个需求:客户在下周一周内需要使用一个报表配合业务,但项目紧张,又不是长久的需要,所以采拼SQL语句得到想要的报表数据,然后发给客户Excel即可。具体做法如下:

以下在Linux服务器中,如果使用Windows需要修改一下脚本及邮件客户端

一、邮件客户端准备
1.      安装邮件发送工具Mailx
Yum install mailx -y
2.      配置邮件工具的SMTP信息
#vi /etc/mail.rc
#文件末尾处添加如下内容
set from=USER@163.comsmtp=smtp.XXXX.com
setsmtp-auth-user=USER@163.com  smtp-auth-password='PASSWORD' smtp-auth=login
3.      测试邮件发送
创建附件测试文件
#echo test>testfile.txt
发送邮件一封主题为”test”,正文为test,附件为testfile.txt的邮件给lizy@163.com
#echo test | mail –s test –a testfile.txt lizy@163.com lizy@263.com

二、SQL查询写入文件
1.      编写SQL语句
Mysql>use DBNAME;
Mysql>select CNAME from TABNAME;
2.      SQL文件写入文件
#mysql –h 127.0.0.1 –database DBNAME –uUser –pPASSWD –e “selectCNAME from TABNAME” > filename
三、编写脚本
#vi /root/script.sh
#!/bin/sh
#--------------MYSQL--------------------
MYSQLHOST=10.0.4.125
MYSQLDB='youth_discuzl_20150716'
MYSQLUSER='test'
MYSQLPWD='test'
#-------------COMMON-----------------
DATE=`date +%Y%m%d`
TRGDIR=’DIR’
#--------------MailList---------------------
MAILLIST=’lizy@163.com lizy@263.comlizy@126.com

mysql -h $MYSQLHOST --database $MYSQLDB -u$MYSQLUSER-p$MYSQLPWD -e "select CNAME from TABNAME” > $TRGDIR/file.xls

mysql -h $MYSQLHOST --database $MYSQLDB -u$MYSQLUSER-p$MYSQLPWD -e "select CNAME from TABNAME” > $TRGDIR/file1.xls

             echo`date` | mail –s SUBJECT –a $TRGDIR/file.xls –a $TRGDIR/file1.xls $MAILLIST

四、计划任务
每晚凌晨1:05执行脚本
#crontab –e
5 1 * * * sh /DIR/script.sh

五、Excel中乱码的处理
由于数据库保存格式与Microsoft Excel默认编码格式不匹配,所以需要对附件中的数据表格进行转码,转码的具体补助如下:
1.      下载附件中的表格
2.      表格文件-右键-打开方式-选择记事本
3.      记事本中-文件-另存为-将原来的Utf8改成ANSI-保存

4.      然后即可无乱码正常使用。








欢迎光临 德克云技术联盟 (http://www.decoclouds.com/)