本帖最后由 李臻宇 于 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. 然后即可无乱码正常使用。
|