使用SPOOL將資料庫資料匯出為符合特定格式的文字檔時,核心在於SELECT語句中以字串串聯方式定義輸出格式。例如需輸出 1,John,1234, 這類逗點分隔格式,可撰寫:
SELECT id || ',' || username || ',' || password || ',' FROM myuser;
以下腳本 expmyusr.sql 可將純淨資料輸出至 e:\exp.txt,不含標題、回饋等多餘資訊:
SET ECHO ON
SET FEEDBACK OFF
SET HEADING OFF
SET VERIFY OFF
SET TRIMSPOOL OFF
SET PAGESIZE 1000
SET LINESIZE 50
DEFINE fil = 'e:\exp.txt'
PROMPT *** Spooling to &fil
SPOOL &fil
SELECT id || ',' || username || ',' || '"' || password || '"' FROM myuser;
SPOOL OFF;
執行結果僅包含格式化後的資料列:
1,John,"1234"
2,Jack,"12345"
3,Rose,"2345"
...
SET COLSEP ','
SET TRIMSPOOL ON
SET LINESIZE 120
SET PAGESIZE 2000
SET NEWPAGE 1
SET HEADING OFF
SET TERM OFF
SPOOL 路徑/檔名
SELECT * FROM tablename;
SPOOL OFF
SET TRIMSPOOL ON
SET LINESIZE 120
SET PAGESIZE 2000
SET NEWPAGE 1
SET HEADING OFF
SET TERM OFF
SPOOL 路徑/檔名
SELECT col1 || ',' || col2 || ',' || col3 || ',' || col4 FROM tablename;
SPOOL OFF
| 比較項目 | 方法一 (COLSEP) | 方法二 (手工串聯) |
|---|---|---|
| 資料格式穩定性 | 極低,易產生不規則空白 | 高,格式整齊可控 |
| 檔案大小 | 龐大 | 約為方法一的1/4 |
| SQL*Loader匯入成功率 | <5% | 近100% |
| 百萬筆資料表現 | 極易出錯 | 穩定可靠 |
建議:生產環境務必採用方法二,雖撰寫SELECT稍繁瑣,但能精確控制輸出格式,大幅降低後續匯入失敗風險,避免走彎路。