批处理查询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