oracle之spool

wangzh3發表於2006-04-21

今天donna過來問我如何儲存select的結果。

我告訴她用spool。

[@more@]

spool的限制是結果集的大小,這個和sqlplus的緩衝區大小有關係。通常比較少的資料,比如在10萬行以內,通常都可以使用這個命令的。

sqlplus>set head off --這個是每若干行結果之前沒有欄位名

set pagesize 0 ---表示不分頁

set linesize 400 ----可能每行資料比較多,設定大一點,表示不換行

set feed off ----表示在輸出結束後,沒有那個summary,就是多少行

set trimspool on ---表示每段結果集之間沒有空行

spool filename ----指示要spool到的檔名(可以帶路徑)

select 語句

spool off ---表示關閉spool,關閉檔案

至於set這一塊,要看sqlplus手冊裡面的,很多項,不過在spool經常用的就上面那幾項了。

後來告訴我她要生成的是sql語句,就是說是不僅把資料選出來,還要生成sql語句,將來要插入到某個表中。

其實這個有兩種解決辦法:

1、insert into 一張新表把select的資料插入,再spool新表就可以了

2、可以在select語句中做文章,比如

select 'insert into table_name(column_lists) values '||......

這樣子再spool出來,就是可以直接執行的sql語句了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/47869/viewspace-829068/,如需轉載,請註明出處,否則將追究法律責任。

相關文章