ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用sqlplus的spool功能格式化输出查询统计报表

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

原创 Linux操作系统 作者:oracle-admin 时间:2013-07-10 15:49:28 0 删除 编辑

使用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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 10.2.0.5补丁下载
下一篇: oracle直方图
请登录后发表评论 登录
全部评论

注册时间:2011-03-23

  • 博文量
    22
  • 访问量
    102921