sqlplus /nolog <<- eof
set linesize 2500
set pagesize 0
set heading off
set feedback off
set echo off
set termout off
set trimout on
set trimspool on
set sqlprompt #sql>
conn security/$securitypassword@$oracle_sid
spool 2-exp.sh
@@ ./sql/2-gen_exp_security.sql
spool off
conn trade/$tradepassword@$oracle_sid
@@ ./sql/2-gen_exp_trade.sql
spool off
conn inte***ce/$inte***cepassword@$oracle_sid
@@ ./sql/2-gen_exp_inte***ce.sql
spool off
conn ulog/$ulogpassword@$oracle_sid
@@ ./sql/2-gen_exp_ulog.sql
spool off
conn clear/$clearpassword@$oracle_sid
@@ ./sql/2-gen_exp_clear.sql
spool off
conn security/$securitypassword@$oracle_sid
spool 5-imp.sh
@@ ./sql/5-gen_imp_security.sql
spool off
conn trade/$tradepassword@$oracle_sid
@@ ./sql/5-gen_imp_trade.sql
spool off
conn inte***ce/$inte***cepassword@$oracle_sid
@@ ./sql/5-gen_imp_inte***ce.sql
spool off
conn ulog/$ulogpassword@$oracle_sid
@@ ./sql/5-gen_imp_ulog.sql
spool off
conn clear/$clearpassword@$oracle_sid
@@ ./sql/5-gen_imp_clear.sql
spool off
eof
1 <<- eof eof
在shell指令碼中,通常將eof與 << 結合使用,表示後續的輸入作為子命令或子shell的輸入,直到遇到eof為止,再返回到主shell。2 set linesize 2500eof只是乙個分界符,當然也可以用abcde替換。
當shell遇到《時,它知道下乙個詞是乙個分界符。在該分界符以後的內容都被當作輸入,直到shell又看到該分界符(位於單獨的一行)。
此分界符可以是所定義的任何字串,其實,不一定要用eof,只要是「內容段」中沒有出現的字串,都可以用來替代eof,完全可以換成abcde之類的字串,只是乙個起始和結束的標誌罷了。
設定每行的字元輸出個數為2500,放置換行(預設為80 )3 set pagesize 0
禁止分頁輸出4 set heading off
禁止輸出標題(預設為on)5 set feedback off
禁止回顯sql命令處理的記錄條數(預設為on)6 set echo off
不顯示指令碼中的每個sql 命令(預設為on)7 set termout off
禁止螢幕顯示指令碼中命令的執行結果(預設為on)8 set trimout on對實際輸出文字沒有影響
去除標準輸出每行的行尾空格(預設為off)9 set trimspool on
去除spool 輸出結果中每行的結尾空格(預設為off)10 set sqlprompt #sql>
去除開頭和結尾的sql查詢和結束命令
將內容附加到乙個已經存在的檔案中12 set newpage 1
設定頁與頁之間的分隔;當值為0時在每頁開頭有乙個小的黑方框;當值為n時在頁和頁之間隔著n個空行;當為none時,會在頁和頁之間沒有任何間隔;13 set colsep |
域輸出分隔符14 set sqlblankline off|on
off 對sql語句中的空行不處理15 col column_name format a50**on 會正確處理空行
設定column_name為50個字元寬說明:spool不但可以把資料匯出到txt,也可以匯出到csv等;不但可以導資料,也可以匯出字元,拼裝成sql檔案等
1.採用設定分隔符的方法
說明:設定分隔符後,由sqlplus自己使用設定的分隔符對欄位進行分割,這種方法不怎麼用,在此不詳述。
set colsep '|' --設定|為列分隔符2.採用分隔符並接,手工控制輸出格式set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
set num 18
set feedback off
spool e:\temp.txt
select * from tablename;
spool off
說明:最佳方法,該方法可以運用各種oracle函式處理匯入時的字元。
set trimspool on3.spool不但可以匯出資料,也可以生成sql檔案set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
spool e:\fs_temp_tb_cm_serv_20120703.txt
select '地市,縣區,使用者,時間,流量,費用' form dual;
select a_name||','||replace(replace(replace(b_name,chr(9)),chr(10)),chr(13))||','||replace(c_name,'\"')||','||to_char(create_time,'yyyy-mm-dd hh24:mi:ss')||','||net_flux||','||all_fee from temp_ltao10;
spool off
上面from dual語句會被當做表頭字段先導出排在第一行
(spool out比spool off多了乙個把檔案傳送到標準列印輸出的動作。記得itpub論壇上有位大蝦總結得更簡練「out = off + print」。)
10g以前的版本,spool會將檔案覆蓋,10g後,為追加。
spool c:\table.sql;select 'insert into changetable values('|| id||',',changedate||',',areaid||',',workunit||',',dept||',',post||',',address||',',zip||',',note||',',city||',',province||',',country||',',status||',',lawpeopleid||',',reason||',',feedback||');' from change where lawpeopleid not in (select id from lawpeople t );
spool off
Sql plus技巧之SPOOL應用
1 使用sql plus動態生成批量指令碼 建立gen drop table.sql檔案,包含如下語句 set echo off 不顯示start啟動的指令碼中的每個sql set feedback off 不回顯處理記錄條數 set newpage none set linesize 2000 一...
oracle中spool的用法小結
在生產中常會遇到需要將數量比較大的錶值匯入到本地文字檔案中.方法有很多種,比較常用的就是spool命令 要輸出符合要求格式的資料檔案只需在select時用字元連線來規範格式。比如有如下表 sql select id,username,password from myuser 測試表 1 john 1...
Orcale中的spool命令使用
在對orcale資料庫檔案進行匯出時,我們希望批量處理已經寫好的sql 但是在終端正常情況下無法進行迴圈執行 sqlplus我們可以對多行 批量處理,步驟如下 1 首先你連線.s 件 sh 資料夾路徑名 s 件 待連線的資料庫 2 終端出現sql 時,說明資料庫連線成功了,此時輸入的語句為 test...