oracle spool定期匯出文字檔案資料,並載入到teradata
oracle匯出文字檔案資料的方法貌似只有sqlplus的spool命令,要定期匯出需要藉助os的計劃任務之類的,不過10g中dbms_schedualr也支援直接掉os批處理檔案。 檔名動態命名為當前日期。 例如,--bat檔案D:\oracle92\bin\sqlplus @C:\zhjh\demo.sql --C:\zhjh\demo.sqlSET NEWPAGE NONE
SET HEADING OFF
SET SPACE 0
SET PAGESIZE 0
SET TRIMOUT ON
SET TRIMSPOOL ON
SET LINESIZE 2500
set colsep '|'
set feedback off
set echo off
SET VERIFY OFF
set termout on --如果資料量比較大,要把螢幕顯示輸出關掉提高效能
column v_date new_value filename;
select to_char(sysdate,'yyyymmdd') || '.dat' v_date from dual;
spool c:\&&filename
select * from scott.emp;
spool off; --執行後 7369|SMITH |CLERK | 7902|17-DEC-80| 800| | 20
7499|ALLEN |SALESMAN | 7698|20-FEB-81| 1600| 300| 30
7521|WARD |SALESMAN | 7698|22-FEB-81| 1250| 500| 30
7566|JONES |MANAGER | 7839|02-APR-81| 2975| | 20
7654|MARTIN |SALESMAN | 7698|28-SEP-81| 1250| 1400| 30
7698|BLAKE |MANAGER | 7839|01-MAY-81| 2850| | 30
7782|CLARK |MANAGER | 7839|09-JUN-81| 2450| | 10
7788|SCOTT |ANALYST | 7566|19-APR-87| 3000| | 20
7839|KING |PRESIDENT | |17-NOV-81| 5000| | 10
7844|TURNER |SALESMAN | 7698|08-SEP-81| 1500| 0| 30
7876|ADAMS |CLERK | 7788|23-MAY-87| 1100| | 20
7900|JAMES |CLERK | 7698|03-DEC-81| 950| | 30
7902|FORD |ANALYST | 7566|03-DEC-81| 3000| | 20
7934|MILLER |CLERK | 7782|23-JAN-82| 1300| | 10
然後再用任何排程工具排程即可。 海量資料匯出的話可以使用並行匯出,用條件區分開,這樣可以提高匯出效能。 在匯入teradta資料庫時,使用fastload即可,並且該工具支援一次從多個檔案匯入。
set命令使用說明:
SQL>set colsep' '; //-域輸出分隔符
SQL>set newp none //設定查詢出來的資料分多少頁顯示,如果需要連續的資料,中間不要出現空行就把newp設定為none,這樣輸出的資料行都是連續的,中間沒有空行之類的
SQL>set echo off; //顯示start啟動的指令碼中的每個sql命令,預設為on
SQL> set echo on //設定執行命令是是否顯示語句
SQL> set feedback on; //設定顯示“已選擇XX行”
SQL>set feedback off; //回顯本次sql命令處理的記錄條數,預設為on即去掉最後的 "已經選擇10000行"
SQL>set heading off; //輸出域標題,預設為on 設定為off就去掉了select結果的欄位名,只顯示資料
SQL>set pagesize 0; //輸出每頁行數,預設為24,為了避免分頁,可設定為0。
SQL>set linesize 80; //輸出一行字元個數,預設為80
SQL>set numwidth 12; //輸出number型別域長度,預設為10
SQL>set termout off; //顯示指令碼中的命令的執行結果,預設為on
SQL>set trimout on; //去除標準輸出每行的拖尾空格,預設為off
SQL>set trimspool on; //去除重定向(spool)輸出每行的拖尾空格,預設為off
SQL>set serveroutput on; //設定允許顯示輸出類似dbms_output
SQL> set timing on; //設定顯示“已用時間:XXXX”
SQL> set autotrace on-; //設定允許對執行的sql進行分析
set verify off //可以關閉和開啟提示確認資訊old 1和new 1的顯示.
SET TERM[OUT]{ON|OFF}
是否在螢幕上顯示輸出的內容,主要用與SPOOL結合使用。設定SETTERMOUTOFF,輸出的內容只儲存在輸出檔案中,不會顯示在螢幕上,提高了SPOOL輸出速度。
set命令介紹見:
實驗案例:http://wallimn.iteye.com/blog/472182