直接 SPOOL file.xls 會包含 SQL*Plus 標題、提示符、執行回饋等冗餘資訊,導致匯入 Excel 需人工清理。
利用 SET MARKUP HTML ON 產生標準 HTML 表格,副檔名命名為 .xls,Excel 可直接開啟並正確識別表格結構。
SET LINESIZE 200
SET TERMOUT OFF
SET VERIFY OFF
SET FEEDBACK OFF
SET PAGESIZE 999
SET MARKUP HTML ON ENTMAP ON SPOOL ON PREFORMAT OFF
SPOOL tables.xls
@get_tables.sql
SPOOL OFF
EXIT
關鍵參數解析:
TERMOUT OFF:抑制終端輸出VERIFY OFF:隱藏變數替換過程FEEDBACK OFF:隱藏「X rows selected.」PAGESIZE 999:避免分頁標題重複MARKUP HTML ON:啟用 HTML 表格輸出ENTMAP ON:特殊字符 HTML 轉義SPOOL ON:將 SPOOL 內容納入 HTML 包裝PREFORMAT OFF:不使用 <PRE> 標籤,生成純 <TABLE>SELECT owner, table_name, tablespace_name, blocks, last_analyzed
FROM all_tables
ORDER BY 1, 2;
$ sqlplus "/ as sysdba" @main.sql
$ ls -l tables.xls
-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls
雙擊 .xls 即可在 Excel 中看到乾淨的表格,無冗餘行、無亂碼。
SELECT owner AS "Schema Owner" ...ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'SET ARRAYSIZE 5000 減少網路往返SET COLSEP ',' + SET MARKUP HTML OFF 配合 SPOOL file.csv雙腳本架構 將環境設定與業務邏輯分離,MARKUP HTML 產生標準化表格結構,Excel 原生支援 HTML 表格匯入,實現「零清理、直開即用」的完美體驗。