天天看點

Sqlplus指令:spool 使用詳解

本文整理自網絡:

SPOOL是 SQLPLUS的指令,必須在SQLPLUS中使用,主要完成以标準輸出方式輸出SQLPLUS的指令及執行結果,一般常使用者格式化導出ORACLE表資料。

對于 SPOOL資料的 SQL,最好要自己定義格式,以友善程式直接導入 ,SQL語句如:

SELECT 'create or replace synonym '||t.synonym_name||' for '||t.synonym_name||'@to_206' FROM user_synonyms t;

spool常用的設定

set colsep' ';    //域輸出分隔符

set echo off;     //顯示 start啟動的腳本中的每個 sql指令,預設為 on

set feedback off;   //回顯本次 sql指令處理的記錄條數,預設為 on

set heading off;   //輸出域标題,預設為 on

set linesize 80;        //輸出一行字元個數,預設為80

set pagesize 0;    //輸出每頁行數,預設為 24,為了避免分頁,可設定為 0。

set termout off;   //顯示腳本中的指令的執行結果,預設為 on

set trimout on;    //去除标準輸出每行的拖尾空格,預設為 off

set trimspool on;   //去除重定向( spool)輸出每行的拖尾空格,預設為 off

set verify off;            //是否顯示替代變量被替代前後的語句。fil

例如:

1、首先登入sqlplus,如:sqlplus  - s username / password @sid 

2、執行以下腳本:

set echo on;

set feedback on;

set trimspool off;

set linesize 120;

set pagesize 2000;

set newpage 1;

set heading on;

set term off;

set termout on;

set timing off;

spool c:\synonym.sql

SELECT 'create or replace synonym '||t.synonym_name||' for '||t.synonym_name||'@to_206;' FROM user_synonyms t

spool off;

今天看關于Oracle 10g的書,翻到SPOOL指令,就在SQL*Plus裡面試了一下,指令的使用很簡單,但是發現書裡面的一個描述問題,讓我在了解上走了一些彎路。 書中有一行說“如果不再需要将指令運作情況及其結果發送到一個檔案中儲存起來,可以使用SPOOL OFF指令”,我的了解是“如果正在SPOOL的情況下,用了SPOOL OFF,SPOOL會停止,資料不會被儲存到檔案”,但是實際測試出來的結果,對于正在SPOOL的情況下,用SPOOL OUT還是SPOOL

OFF,此次SPOOL的資料都會被儲存到檔案,并且假脫機狀态都會被停止,那麼OFF/OUT究竟有什麼不同呢? 查了指導文檔裡面關于SLOOP的說明: file_name[.ext] Represents the name of the file to which you wish to spool. SPOOL followed by file_name begins spooling displayed output to the named file. If you do not specify an

extension, SPOOL uses a default extension (LST or LIS on most systems). OFF Stops spooling. OUT Stops spooling and sends the file to your host computer's standard (default) printer. 看到這個,大家應該就明白了,SPOOL OUT比SPOOL OFF多了一個把檔案發送到标準列印輸出的動作。記得ItPub論壇上有位大蝦總結得更簡練“OUT

= OFF + PRINT”。 Enter SPOOL with no clauses to list the current spooling status.這句也是指導文檔裡面的話,和本文題目沒有什麼關系,覺得有用,也列出來了。 最後要說一下,像這樣的教材上的描述,容易造成大家的錯誤了解。學習過程中,走彎路是花時間是正常的,但是錯誤了解卻沒有意識到就不好了,是以特别的寫出來,希望能對遇到這個問題的朋友們有所幫助。From:http://hi.baidu.com/bjyss/blog/item/db7645f48f01732dbd31090d.html