德克云技术联盟

会员中心
发新帖
打印 上一主题 下一主题

MySQL数据导出到Excel
发布人: 李臻宇 发布时间:2015-10-30 浏览:10013

本帖最后由 李臻宇 于 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---------------------

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.      然后即可无乱码正常使用。




分类浏览
关于我们
联系我们
技术联盟
云服务
云技术
云合作
帮助中心
发帖规则
QQ客服
内部通道
企业邮箱
企业论坛
版本选择
手机版
电脑版
用手机扫描下方二维码查看手机版页面

版权所有 西安云联电子科技有限公司
Copyright @ 2011-2022 | decoclouds.com All Rig
陕ICP备13002202号-1

快速回复 返回顶部 返回列表