利用Oracle中的Spool緩衝池技術可以實現Oracle資料匯出到文字檔。
1、在Oracle PL/SQL中輸入緩衝開始命令,並指定輸出的檔案名稱:
spool d:/output.txt
2、
set heading off --去掉欄位名
set time off echo off head off --此行設定不計算時間 不顯示sql語句 不每隔幾行現一下列名
set pagesize 0 --去掉沒格幾行就顯示一下的空行或多餘的空格
set trims on --去掉全部空格,預設長度不夠填充空格
set feedback off --不顯示選擇行數 不能和上一行和在一起
3、在命令列中隨便輸入你的SQL查詢:
select mobile from customer;
select mobile from client;
……
3、在命令列中輸入緩衝結果命令:
spool off;
則系統將緩衝池中的結果都輸出到"output.txt"檔案中,以TAB鍵分隔!
-----------------------------------------------------------------
ksh:
runlog=p_divide_001.log
nohup sqlplus " datatrans/hw@szdb1"<<!>/dev/null 2>&1 &
set serveroutput on
set timing on
set time on
spool $runlog
set autocommit on;
exec P_DIVIDE_INDEX_new(755,'CM_SUBS_SERVICE','SUBSID','P_DEL_DOUBLE_OPEN');
commit;
spool off
!
或者:
sqlplus -s $v_dest_tns_user/$v_dest_tns_pswd@$v_dest_tns_db << EOF | grep "DATA.VALUE" | while read s1 s2
set linesize 512 pagesize 512 head off
select 'DATA.VALUE' "FIELDNAME",
decode(data_type,'DATE', column_name||' date ''yyyy-mm-dd hh24:mi:ss'' '||
decode(column_id,$v_max_column_id, '',','),
'VARCHAR2', column_name||' char('||to_char(data_length)||')'||
decode(column_id,$v_max_column_id, '',','),
column_name|| decode(column_id,$v_max_column_id, '',','))
from all_tab_columns
where owner=upper('$v_dest_tns_user') and table_name=upper('$v_table_name')
order by column_id;
EOF
do
echo $s2 >> ./$v_datafile_name.ctl
done
----------------
sqlplus -s datatrans/hw@szdb1 <<EOF >sql.log
set linesize 1024 pagesize 512 head off
select * from dt_region;
EOF
SQL> set echo on --設定運行命令是是否顯示語句
SQL> set feedback on --設定顯示“已選擇XX行”
SQL> set colsep | --設定列與列之間的分割符號
SQL> set pagesize 10 --設定每一頁的行數
SQL> set serveroutput on --設定允許顯示輸出類似dbms_output
SQL> set heading on --設定顯示列名
SQL> set timing on --設定顯示“經過時間:XXXX”
SQL> set time on --設定顯示目前時間
SQL> set autotrace on --設定允許對執行的sql進行分析
set verify off --可以關閉和開啟提示確認資訊old 1和new 1的顯示.
set colsep '' --域輸出分隔字元
set linesize 4000 --輸出一行字元個數,預設為80
set pagesize 0 --輸出每頁行數,預設為24,為了避免分頁,可設定為0。
set num 16(或者set numwidth 16) --輸出number類型域長度,預設為10
set trimspool on --去除重新導向(spool)輸出每行的拖尾空格,預設為off
set heading off --輸出域標題,預設為on
set feedback off --回顯本次sql命令處理的記錄條數,預設為on
set termout off; --顯示指令碼中的命令的執行結果,預設為on
set timing off; --顯示每條sql命令的耗時,預設為off
set trimout on; --去除標準輸出每行的拖尾空格,預設為off
set echo off --顯示start啟動的指令碼中的每個sql命令,預設為on