【SQL*Plus】SPOOL到檔案且在螢幕上列印SPOOL輸出資訊
如果您經常在SQL*Plus中書寫指令碼,一定會遇到這樣一個場景:使用spool將“使用SQL生成SQL指令碼”的內容輸出到檔案過程中,不想在螢幕上看到輸出的SQL指令碼資訊,而直接可以呼叫生成的指令碼來執行。
如果上面的場景描述,您沒有明白是什麼意思,那麼請看我下面的真實需求演示。
1.資料庫日常維護中的一個具體需求
自動完成使用者下所有表的分析,執行過程中,螢幕上不顯示分析指令碼的具體內容,僅顯示最後分析語句的執行情況。
2.需求實現
$ cat analyze_user_table.sql
set head off
set feedback off
set linesize 131
set pagesize 0
set termout off
set trimspool on
SET TERMOUT OFF
spool generate_analyze_user_table.sql
SELECT 'analyze table ' || table_name
|| ' compute statistics for table for all indexes for all indexed columns;'
FROM user_tables;
spool off
set feedback on
SET TERMOUT ON
@generate_analyze_user_table.sql
3.上面指令碼的使用方法
在SQL*Plus中使用“@”方式引用上面“analyze_user_table.sql”指令碼,執行效果如下
sec@asd> @analyze_user_table.sql
Table analyzed.
Table analyzed.
...
4.指令碼分析說明
只有你真正的執行了上面的程式碼,你才能真正體會到其中的變化。
實現需求的的關鍵體現在“SET TERMOUT OFF”這條語句,該命令的目的是,在執行指令碼的過程中不屏顯輸出內容,但真實的完成指令碼的內容。
其他的set命令指示輔助輸出,使生成的指令碼更加的規範
Oracle官方文件中關於SET TERMOUT的說明摘錄在此:
SET TERM[OUT] {ON | OFF}
SET TERMOUT is not supported in iSQL*Plus
Controls the display of output generated by commands in a script. that is executed with @, @@ or START. OFF suppresses the display so that you can spool output to a file without displaying the output on screen. ON displays the output on screen. TERMOUT OFF does not affect output from commands you enter interactively or redirect to SQL*Plus from the operating syste
連線:
5.使用“SET TERMOUT OFF”的注意事項
從上面引用的文件描述中可以得到一個注意事項:只有在呼叫的指令碼中使用時,才能達到“屏不顯但輸出”的效果,如果直接在SQL*Plus中使用,這個引數是不生效的。
驗證方法:僅需將上面我編寫的小指令碼直接複製到SQL*Plus中執行便可得到驗證。
6.小結
關於SQL*Plus中的很多設定小技巧都非常有趣而且高效。
更多資訊可以參考Oracle的官方文件“SET System Variable Summary”
-- The End --
如果上面的場景描述,您沒有明白是什麼意思,那麼請看我下面的真實需求演示。
1.資料庫日常維護中的一個具體需求
自動完成使用者下所有表的分析,執行過程中,螢幕上不顯示分析指令碼的具體內容,僅顯示最後分析語句的執行情況。
2.需求實現
$ cat analyze_user_table.sql
set head off
set feedback off
set linesize 131
set pagesize 0
set termout off
set trimspool on
SET TERMOUT OFF
spool generate_analyze_user_table.sql
SELECT 'analyze table ' || table_name
|| ' compute statistics for table for all indexes for all indexed columns;'
FROM user_tables;
spool off
set feedback on
SET TERMOUT ON
@generate_analyze_user_table.sql
3.上面指令碼的使用方法
在SQL*Plus中使用“@”方式引用上面“analyze_user_table.sql”指令碼,執行效果如下
sec@asd> @analyze_user_table.sql
Table analyzed.
Table analyzed.
...
4.指令碼分析說明
只有你真正的執行了上面的程式碼,你才能真正體會到其中的變化。
實現需求的的關鍵體現在“SET TERMOUT OFF”這條語句,該命令的目的是,在執行指令碼的過程中不屏顯輸出內容,但真實的完成指令碼的內容。
其他的set命令指示輔助輸出,使生成的指令碼更加的規範
Oracle官方文件中關於SET TERMOUT的說明摘錄在此:
SET TERM[OUT] {ON | OFF}
SET TERMOUT is not supported in iSQL*Plus
Controls the display of output generated by commands in a script. that is executed with @, @@ or START. OFF suppresses the display so that you can spool output to a file without displaying the output on screen. ON displays the output on screen. TERMOUT OFF does not affect output from commands you enter interactively or redirect to SQL*Plus from the operating syste
連線:
5.使用“SET TERMOUT OFF”的注意事項
從上面引用的文件描述中可以得到一個注意事項:只有在呼叫的指令碼中使用時,才能達到“屏不顯但輸出”的效果,如果直接在SQL*Plus中使用,這個引數是不生效的。
驗證方法:僅需將上面我編寫的小指令碼直接複製到SQL*Plus中執行便可得到驗證。
6.小結
關於SQL*Plus中的很多設定小技巧都非常有趣而且高效。
更多資訊可以參考Oracle的官方文件“SET System Variable Summary”
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-616786/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何讓sqlplus spool輸出的檔案成excel檔案SQLExcel
- 詳解sql*plus spool命令SQL
- 【實驗】使用SQL*Plus中set命令格式化SPOOL匯出的檔案SQL
- sqlplus spoolSQL
- 從sqlplus 中spool輸出格式為html的資訊SQLHTML
- Sqlplus for Solaris上SPOOL OUT的bugSQL
- sqlplus中設定在螢幕中上不列印出輸出SQL
- 函式FUN_GET_SPOOL_STRING_LHR的內容--spool匯出csv檔案格式函式
- sqlplus中利用spool生成帶日期的檔名SQL
- SPOOL 命令使用例項【oracle匯出純文字格式檔案】Oracle
- [20241013]sqlplus spool與檔案覆蓋.txtSQL
- Oracle spoolOracle
- /var/spool/clientmqueue 下生成太多檔案處理clientMQ
- oracle之spoolOracle
- linux教程:管理/var/spool/clientmqueue/下的大檔案LinuxclientMQ
- Oracle spool用方法Oracle
- 【SQL*Plus】使用SQL*Plus的-S選項精簡輸出資訊SQL
- Android 在螢幕上列印LOGAndroid
- Oracle Spool經典教程Oracle
- Oracle如何使用spool匯出utf8字符集的文字檔案Oracle
- 遍歷當前目錄下的所有HTML檔案,並且顯示到螢幕中HTML
- 關於oracle的Spool命令Oracle
- Export with Spool and Parallel Utl_FileExportParallel
- MySQL tee實現Oracle SpoolMySqlOracle
- ZT:spool常用的設定
- 自動設定SPOOL檔名為當前日期
- /var/spool/clientmqueue/目錄下存在大量檔案的原因及解決方法clientMQ
- Linux 中 /var/spool/postfix/maildropLinuxAI
- oracle10g_rman_語法測試_spool_sql_startupOracleSQL
- 在web上逐行輸出較大的txt檔案Web
- 把oracle RMAN的命令輸出寫在檔案上Oracle
- 某Q友的問題--如何讓sqlplus spool產生的日誌附加sysdate日期資訊-shellSQL
- 一個在 iOS 裝置螢幕上實時列印 Log 的小工具iOS
- SQL*PLUS 格式化輸出SQL
- PowerShell輸出內容到檔案
- db2 hadr_spool_limitDB2MIT
- You have new mail in /var/spool/mail/rootAI
- Oracle Spool的用法小結以及兩種方法的比較----------匯出記錄到文字Oracle