posts - 262,  comments - 221,  trackbacks - 0
          【5】設(shè)置輸出內(nèi)容的相關(guān)命令
          1. 將顯示的內(nèi)容輸出到指定文件 
          SQL
          > SPOOL file_name 
          在屏幕上的所有內(nèi)容都包含在該文件中,包括你輸入的sql語(yǔ)句。 

          2. 關(guān)閉spool輸出 
          SQL
          > SPOOL OFF 
          只有關(guān)閉spool輸出,才會(huì)在輸出文件中看到輸出的內(nèi)容。 
          備注:在實(shí)用SPOOL輸出內(nèi)容到本地文件時(shí),需注意編碼格式,否則會(huì)出現(xiàn)亂碼的問(wèn)題

          3
          .是否顯示用DBMS_OUTPUT.PUT_LINE包進(jìn)行輸出的信息 
          SQL
          > SET SERVEROUT[PUT] {ON|OFF

          4
          .是否在屏幕上顯示輸出的內(nèi)容,主要用與SPOOL結(jié)合使用。 
          SQL
          > SET TERM[OUT] {ON|OFF

          用spool命令將一個(gè)大表中的內(nèi)容輸出到一個(gè)文件中時(shí),將內(nèi)容輸出在屏幕上會(huì)耗費(fèi)大量的時(shí)間。
            設(shè)置set termspool off后,則輸出的內(nèi)容只會(huì)保存在輸出文件中,不會(huì)顯示在屏幕上,極大的提高了spool的速度。 

          備注:和Set serveroutput on不同, 這個(gè)命令用于設(shè)置SQL執(zhí)行結(jié)果是否顯示,前者是用于設(shè)置存儲(chǔ)過(guò)程的

          5
          .將SPOOL輸出中每行后面多余的空格去掉 
          SQL
          > SET TRIMS[OUT] {ON|OFF

          6
          .將指定的信息或一個(gè)空行輸出到屏幕上 
          PROMPT 
          [text] 
          備注:該命令在輸出提示、警告信息經(jīng)常使用


          下面我們使用Spool技術(shù)來(lái)導(dǎo)出一個(gè)表的數(shù)據(jù),我們要求做到:

          ①導(dǎo)出的過(guò)程不在SQL*PLUS屏幕上顯示
          ②導(dǎo)出的文本中不含有執(zhí)行的SQL命令
          ③導(dǎo)出的文本中不含有字段名
          ④導(dǎo)出的文本中使用逗號(hào)(英文)作為字段的分隔符
          ⑤導(dǎo)出的文本中每行長(zhǎng)200個(gè)字符
          ⑥導(dǎo)出的文本中每頁(yè)999行
          ⑦導(dǎo)出的文本中每行后面的空格必須被截取

          那么下面我們來(lái)看一下應(yīng)該如何做到,首先創(chuàng)建一個(gè)用于導(dǎo)出的sql腳本文件,我們將其命名為ExpData.sql,腳本內(nèi)容如下所示:

          set echo off                --關(guān)閉腳本中正在執(zhí)行的SQL語(yǔ)句的顯示
          set feedback off         --關(guān)閉當(dāng)前sql語(yǔ)句查詢(xún)或修改的行數(shù)的顯示
          set verify off
          set term off                 --關(guān)閉屏幕上輸出內(nèi)容的顯示
          set trimspool on        --將每行后面多余的空格去掉
          set linesize 200         --設(shè)置每行最多顯示200個(gè)字符
          set pagesize 999       --設(shè)置每頁(yè)最多顯示999行記錄
          --
          set newpage none  --設(shè)置頁(yè)與頁(yè)之間的分隔
          set heading off          --關(guān)閉標(biāo)題的輸出

          spool d:\peng\
          database\oracle\tables.xls
          @d:\peng\database\oracle\get_table.sql
          spool 
          off  --關(guān)閉輸出


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

          select id || ',' || name || ',' || remark || ',' || reg_date || ',' || salary from testtable;


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

          SQL> @d:\peng\database\oracle\ExpData.sql
          SQL
          > 

          注意在這里我們看不到任何的輸出結(jié)果,是因?yàn)槲覀兪褂昧藄et echo off和set term off兩個(gè)選項(xiàng)的結(jié)果。在大數(shù)據(jù)量導(dǎo)出的情況下關(guān)閉屏幕的輸出非常有必要,因?yàn)檫@將大大提高程序執(zhí)行的效率,否則的話(huà)會(huì)導(dǎo)致SQL*PLUS不停地刷新屏幕和緩沖區(qū)。

          其實(shí)我們也可以把上述的幾個(gè)選項(xiàng)寫(xiě)在一塊,比如說(shuō)現(xiàn)在我們要將導(dǎo)出文件改為htm文件格式,我們可以這樣寫(xiě)
          set term off verify off feedback off  pagesize 999  heading on
          set markup html on entmap ON spool on preformat off

          spool d:\peng\
          database\oracle\tables.htm
          @d:\peng\database\oracle\get_table.sql
          spool 
          off

          這里我們使用set markup html on來(lái)將文件導(dǎo)出成為HTML格式,同時(shí)注意導(dǎo)出文件名的后綴要改為.htm。因?yàn)椴捎昧薍TML表格的形式,所以我們將第二個(gè)腳本稍微修改一下
          select *  from testtable;

          導(dǎo)出的最終結(jié)果如下:
          SQL> @d:\peng\database\oracle\ExpData.sql
          SQL
          > 



          注意在導(dǎo)出完成后SQL*PLUS的提示符變成了SQL>這是因?yàn)槲覀兇蜷_(kāi)了HTML格式的輸出所致(>),如果我們要恢復(fù)成默認(rèn)的提示符格式,只需要再次執(zhí)行一次:
          set markup html off
          就可以了。


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2008-05-26 23:36 Paul Lin 閱讀(2068) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Oracle SQL/PLSQL
          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(21)

          隨筆分類(lèi)

          隨筆檔案

          BlogJava熱點(diǎn)博客

          好友博客

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 中牟县| 和硕县| 和顺县| 兖州市| 湘阴县| 藁城市| 兴海县| 通辽市| 丹阳市| 阜南县| 韶山市| 广宁县| 松潘县| 天柱县| 清远市| 绥德县| 江北区| 建始县| 鄱阳县| 寻甸| 蓬安县| 武陟县| 盱眙县| 杭锦旗| 永福县| 宁海县| 普兰县| 苏州市| 蒙山县| 通道| 桐乡市| 潜江市| 杂多县| 朝阳县| 繁昌县| 寿宁县| 福鼎市| 嘉荫县| 来安县| 安达市| 河东区|