定時導出Oracle數據表到文本文件的方法


該實例實現了通過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文件執行即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM