














設(shè)置set termspool off后,則輸出的內(nèi)容只會保存在輸出文件中,不會顯示在屏幕上,極大的提高了spool的速度。









下面我們使用Spool技術(shù)來導(dǎo)出一個表的數(shù)據(jù),我們要求做到:
①導(dǎo)出的過程不在SQL*PLUS屏幕上顯示
②導(dǎo)出的文本中不含有執(zhí)行的SQL命令
③導(dǎo)出的文本中不含有字段名
④導(dǎo)出的文本中使用逗號(英文)作為字段的分隔符
⑤導(dǎo)出的文本中每行長200個字符
⑥導(dǎo)出的文本中每頁999行
⑦導(dǎo)出的文本中每行后面的空格必須被截取
那么下面我們來看一下應(yīng)該如何做到,首先創(chuàng)建一個用于導(dǎo)出的sql腳本文件,我們將其命名為ExpData.sql,腳本內(nèi)容如下所示:













請注意上面的兩個地方:set部分和spool部分,前者用于設(shè)置導(dǎo)出的文本格式,后者再次執(zhí)行一個sql腳本:get_table.sql進(jìn)行導(dǎo)出。下面我們再看另一個腳本get_table.sql:

這里我們使用了||','||來為每個導(dǎo)出字段添加分隔符:,最后是在SQL*PLUS環(huán)境下執(zhí)行上述的導(dǎo)出腳本


注意在這里我們看不到任何的輸出結(jié)果,是因為我們使用了set echo off和set term off兩個選項的結(jié)果。在大數(shù)據(jù)量導(dǎo)出的情況下關(guān)閉屏幕的輸出非常有必要,因為這將大大提高程序執(zhí)行的效率,否則的話會導(dǎo)致SQL*PLUS不停地刷新屏幕和緩沖區(qū)。
其實我們也可以把上述的幾個選項寫在一塊,比如說現(xiàn)在我們要將導(dǎo)出文件改為htm文件格式,我們可以這樣寫






這里我們使用set markup html on來將文件導(dǎo)出成為HTML格式,同時注意導(dǎo)出文件名的后綴要改為.htm。因為采用了HTML表格的形式,所以我們將第二個腳本稍微修改一下

導(dǎo)出的最終結(jié)果如下:


據(jù)庫/Oracle_spool_html.jpg)
注意在導(dǎo)出完成后SQL*PLUS的提示符變成了SQL>這是因為我們打開了HTML格式的輸出所致(>),如果我們要恢復(fù)成默認(rèn)的提示符格式,只需要再次執(zhí)行一次:

-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。