摘自剑花烟雨江南
在Web项目中,我们经常会遇到Excel表格导出的功能,对于一些数据实时性要求不高的、逻辑相对简单的导出,是否可用通过shell脚本的方式来进行导出,从而降低开发成本呢?
我们都知道,CSV格式可以用Excel表打开,且CSV格式的本质是以“,”为分隔符的文本,那么我们在sql的字段之间加入","即可以CSV格式的文件进行输出。
下面,我们使用shell脚本来实现:
#!/bin/bash
#文件保存路径
exportdata_dir = /data/export
#获取日期
dd = `data + %Y%m%d`
#数据库信息
#数据库用户名
username = 'root'
#数据库密码 可以放在文件内
password = 'root'
#数据库名
database_name = 'export_test'
#数据库之地
host = '127.0.0.1'
#如果文件夹不存在则创建
if [ ! -d $exportdata_dir ];
then
mkdir -p $exportdata_dir;
fi
#导出订单的sql
order_sql = '';
order_file = '订单'
#导出文件
/usr/local/mysql/bin/mysql -h $host -u$username -p$password $database_name -e "$order_sql" > $exportdata_dir/$order_file.csv
#如果文件已生成则删除
if [ -f $exportdata_dir/$order_file'_'$dd.csv];
then
rm -rf $exportdata_dir/$order_file'_'$dd.csv;
fi
#转码
iconv -f "utf-8" -t "gbk" -c $exportdata_dir/$order_file.csv > $exportdata_dir/$order_file'_'$dd.csv;
rm -rf $exportdata_dir/$order_file.csv
这样我们使用 centos 的crontab 定时任务执行shell脚本即可完成Excel的定时生成,如果需要进行用户下载,在后台代码中遍历 exportdata_dir 下的文件,提供下载功能即可。
评论