使用sqlplus的spool功能格式化输出查询统计报表

使用sqlplus的spool功能格式化输出查询统计报表

在日常工作中,使用oracle数据库的DBA应该都会碰见这样的需求:

公司相关部门,定期需要技术人员出具相关业务的数据统计,其实如果这种统计是很频繁或者说查询数据量比较大,耗时较长,我们可以让开发写程序,做成定期自动生成一个excel的统计报表,作为DBA也有自己实现此功能的方法。

据本人所知,将查询统计的数据直接保存成excel格式的方法主要有:

1,使用pl/sql工具查询,然后将结果粘贴复制到excel;或者点击导出成csv格式,但是如果数据库字符集不是GBK格式的话,中文可能会乱码(如果查询时间不算太长)

2,使用excel的新建ODBC数据源连接直接导入到excel(仅限查询数据量不算太大,查询时间不算太长)

3,使用oracle自带的utl_file包来编写存储过程进行生成统计excel

4,就是咱们这次要详细讲解的sqlplus 的spool功能

1)编写一个linux下运行的shell脚本connect.sh

#!/bin/bash
#TIME=`date +%Y%m%d -d "3 days ago"`
TIME=`date +%Y%m -d "1 month ago"`
source ~/.bash_profile
sqlplus user/passwd < /dev/null
set linesize 2000
set term off verify off feedback off pagesize 9999
set markup html on entmap ON spool on preformat off
spool /var/local/bssg-reports/proxy-ticket-details/individual/reports/individual$TIME-10$TIME-12.html
@/var/local/bssg-reports/proxy-ticket-details/individual/get-data10-12.sql
spool off
exit
!

说明:使用set markup html on用于输出为HTML格式(HTML格式不会乱码),其实后面的spool出来的文件名称的后缀名可以直接写成.xls,spool出来的HTML文件可以直接用excel打开。

2)将查询的语句另存为一个sql文本get-date10-12.sql

select ****** from table_name

注意,sql文本中不能有空行,否则无法在linux上执行。

3)然后将connect.sh脚本放在oracle用户下的crontab里面定期执行即可,以后就不用每次手动跑sql了,到时间直接上服务器拿取文件就行,甚至可以结合linux的mailx直接将文件邮件发送给需要的部门工作人员(或者使用vsftp让客户自己去下载)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23502881/viewspace-765979/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23502881/viewspace-765979/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值