通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱相关的知识,希望对你有一定的参考价值。

通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱
#!/bin/bash
#通过shell查询数据信息并保存在excel中,并记录日志
#Data:2018-06-14
#Name:Zhang

#数据库连接地址
DBServer='192.168.1.1'
#数据库用户名
DBUserName='zhang'
#数据库密码
DBPasswd='zhang'
###########################################################
#选择数据库
Use_Cmd="use zhang"
#查询数据库信息Sql语
Select_Cmd="SELECT * FROM STUDENTS;"
###########################################################
#后台支付信息保存路径
Payment_DataDir='/opt/select_back'
#日志保存路径
LogDir=/opt/select_back/logs
#数据导出时间
backtime=`date +%Y%m%d%H%M`
#保存文件名称
DataName="支付订单信息"
###########################################################
#邮件收件人
#Email_receiver_people="[email protected]"
#邮件主题
#Email_Subject="详细信息$backtime"
##########################################################
MKDIR='/bin/mkdir'
#########################################################

echo "##################判断备份路径 #############################"
test ! -d $Payment_DataDir && $MKDIR -p $Payment_DataDir
test ! -w $Payment_DataDir && echo "Error: $Payment_DataDir is un-writeable." && exit 0
test ! -d $LogDir && $MKDIR -p  $LogDir
test ! -w $LogDir && echo "Error: $LogDir is un-writeable." && exit 0

echo "######################备份开始 #############################"
echo "" >> $LogDir/$DataName.log
echo -e "33[44;32m-------------------------分割线-----------------------33[0m 
" >> $LogDir/$DataName.log
echo "导出时间为$backtime,导出${DataName}文件开始" >> $LogDir/$DataName.log
/usr/local/mysql/bin/mysql -u$DBUserName -h$DBServer -p$DBPasswd  -e "$Use_Cmd;$Select_Cmd" > $Payment_DataDir/$DataName-$backtime.xls
#sed -i 's/^/`&/g' $Payment_DataDir/$DataName-$backtime.xls
#使用iconv转换编码格式,把linux的utf8转换成windows的gbk
iconv -f "utf-8" -t "gbk" $Payment_DataDir/$DataName-$backtime.xls > $Payment_DataDir/Orders.xls
#因第一列数据超过18位,excel中使用了科学计数法,所以把第一列加了“`”转换成文本格式
sed -i 's/^/`&/g' $Payment_DataDir/Orders.xls
if [ "$?" == 0 ];then
#把导出结果通过邮件脚本,发送到邮箱
	/opt/py3/bin/python3 /opt/select_back/select_mail.py
	echo "导出时间为$backtime,导出$DataName文件结束!!!" >> $LogDir/$DataName.log
	echo "Mysql-$DataName数据导出成功!!!" >> $LogDir/$DataName.log
else
	echo "导出时间为$backtime,导出$DataName文件结束!!!" >> $LogDir/$DataName.log
	echo "Mysql-$DataName数据导失败!!!" >> $LogDir/$DataName.log
fi

echo "######################导出数据结束,时间为:$backtime#####"

注:如以上有错误或者有不足的地方请指正

以上是关于通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱的主要内容,如果未能解决你的问题,请参考以下文章

在delphi中如何将查询结果导出到excel中

如何将SQL server 2008 里的查询结果导出到 Excel 表内?

SQL Server查询结果导出到EXCEL表格

在PB中,把数据窗口导入到excel

PostgreSQL:将结果数据从 SQL 查询导出到 Excel/CSV

sqlserver 如何将查询结果导出到excel中