德克云技术联盟
标题: 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
二、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---------------------
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/) |