批处理查询oracle报表数据到xls文件中-2018-0723

先写一个bat

::模板里面时间需要改成7天前的日志和7天前的日志。经过tmp-dandian.sql作为中间文件最终转成我们需要的
cd C:\bat\
set SQL_A=C:\bat\moban-dandian.sql
set SQL_B=C:\bat\tmp-dandian.sql
set SQL_C=C:\bat\web-dandian.sql
::main.sql文件包含环境变量的设置和具体执行调用SQL_C,这样导出的xls文件美观点
set SQL_D=C:\bat\main.sql

::获取7天前的日期为2018-07-16这种格式
ddate  -d "-7 days" +%%F >tmp.txt
::把日期赋值给DAY_7这个变量
set /p DAY_7=<tmp.txt
echo %DAY_7%

::获取1天前的日期为2018-07-22这种格式
ddate  -d "-1 days" +%%F > tmp.txt
::把日期赋值给DAY_1这个变量
set /p DAY_1=<tmp.txt
echo %DAY_1%
::使用window版本的sed工具替换日期
sed s/TIME_7/%DAY_7%/  %SQL_A% >%SQL_B%
sed s/TIME_1/%DAY_1%/  %SQL_B% >%SQL_C%
::执行sql文件
sqlplus dawnweb/dawnwebdawn  @%SQL_D% 

  

查看main.sql文件内容

前3行设置环境变量。这样导出的数据显示的好看

spool指定导出xls到某路径下

@调用具体的查询数据的sql文件

set linesize 200 
set term off verify off feedback off pagesize 999 
set markup html on entmap ON spool on preformat off
spool c:\data\hzhs-data-7d-dandian.xls
@c:\bat\web-dandian.sql
spool off
exit

  

 

 

其中sed工具和ddate都是gnu工具windows版本的

ddate本来是date.exe,为了不和windows自带的冲突,就手动改成了ddate.exe

 

posted on 2019-03-01 21:52  nmap  阅读(252)  评论(0编辑  收藏  举报

导航