該實例實現了通過windows定時任務來實現了將數據庫中指定數據表數據導出為txt文本格式。其思路是通過可執行的bat文件去調用導出數據腳本,然后再在windows定時任務中調用該bat文件來實現。該示例需要能夠運行的sqlplus環境,因此需要安裝Oracle客戶端等可運行環境。
實現了將數據庫中日志表數據導出到指定文件夾下的.log文件,且該文件的命名方式采用按天來導出的格式(如:C:\HttpLog\20130115.log),當然具體路徑根據你的需求可進行自定義設置。如果你不想建立windows定時任務來導出該日志,你也可以定期雙擊運行logout.bat文件即可實現。
spool是sqlplus的命令,必須在sqlplus中使用,主要完成以標准輸出方式輸出sqlplus的命令及執行結果,一般常用戶格式化導出oracle表數據。
對於spool數據的sql語句,最好是自定義格式,以方便程序直接導入 ,示例SQL語句如:
select col1||','||col2||','||col3||','||col4||','||to_number(to_char(col5,'YYYYMMDD')) from table_name;
spool命令常用設置:
set colsep','; //-域輸出分隔符
set newp none //設置查詢出來的數據分多少頁顯示,如果需要連續的數據,中間不要出現空行就把newp設置為none,這樣輸出的數據行都是連續的,中間沒有空行之類的
set echo off; //顯示start啟動的腳本中的每個sql命令,缺省為on
set echo on //設置運行命令是是否顯示語句
set feedback on; //設置顯示“已選擇XX行”
set feedback off; //回顯本次sql命令處理的記錄條數,缺省為on即去掉最后的“已經選擇10000行”
set heading off; //輸出域標題,缺省為on 設置為off就去掉了select結果的字段名,只顯示數據
set pagesize 0; //輸出每頁行數,缺省為24,為了避免分頁,可設定為0。
set linesize 80; //輸出一行字符個數,缺省為80
set numwidth 12; //輸出number類型域長度,缺省為10
set termout off; //顯示腳本中的命令的執行結果,缺省為on
set trimout on; //去除標准輸出每行的拖尾空格,缺省為off
set trimspool on; //去除重定向(spool)輸出每行的拖尾空格,缺省為off
set serveroutput on; //設置允許顯示輸出類似dbms_output。
set timing on; //設置顯示“已用時間:XXXX”。
set autotrace on; //設置允許對執行的sql進行分析。
set verify off //可以關閉和打開提示確認信息old 1和new 1的顯示。
1、創建數據庫日志表導出為文本文件的腳本tabout.ctl或tabout.sql
注意:該日志導出后在c:\HttpLog目錄下
tabout.ctl腳本內容如下:
SET NEWPAGE NONE
SET HEADING OFF
SET TERM OFF
SET SPACE 0
SET PAGESIZE 0
SET TRIMOUT ON
SET TRIMSPOOL ON
SET LINESIZE 2500
set feedback off
set echo off
SET VERIFY OFF
column v_date new_value filename;
select to_char(sysdate,'yyyymmdd') || '.log' v_date from dual;
spool ..\HttpLog\&&filename
select id||','||name from orcluser.test;
spool off;
exit;
2、創建調用該腳本的logout.bat文件
logout.bat內容如下:
mkdir ..\HttpLog\
C:\oracle\ora92\bin\sqlplus orcluser/orcl @C:Oracleout.ctl
說明:該bat文件直接在當前目錄下創建名為HttpLog的文件夾,以便tabout.ctl腳本輸出的文件存放到該目錄下。其通過調用Oracle中sqlplus可執行文件來執行tabout.ctl腳本,所以該文件直接雙擊即可運行,無需其他操作。
3、通過windows定時任務實現自動定期執行
“在控制面板——任務計划——添加任務計划”中建立定期將數據庫中日志表數據導出為文本格式(如:你可以根據需求設置為每天對日志表數據進行導出)。根據你當前對日志文件路徑的存儲需求,修改上面兩個腳本中的存儲路徑,在windows定時任務直接調用logout.bat文件執行即可。