一鍵匯出腳本 (czrk.sql)
SET ECHO OFF
SET FEEDBACK OFF
SET NEWPAGE NONE
SET PAGESIZE 50000
SET LINESIZE 20000
SET VERIFY OFF
SET PAGESIZE 0
SET TERM OFF
SET TRIMS ON
SET HEADING OFF
SET TRIMSPOOL ON
SET TRIMOUT ON
SET TIMING OFF
SET VERIFY OFF
SET COLSEP '|'
SPOOL D:\czrk.txt
SELECT sfzh || ',' || xm || ',' || xb || ',' || csrq || ',' || mz || ',' || xzqh || ',' || jzdz
FROM m_czrk
WHERE ROWNUM <= 10000;
SPOOL OFF
關鍵 SET 參數解析
| 參數 | 作用 | 建議值 |
| ECHO OFF | 不顯示指令本身 | OFF |
| FEEDBACK OFF | 隱藏「已選取 N 筆」訊息 | OFF |
| NEWPAGE NONE | 不換頁 | NONE |
| PAGESIZE 0 | 關閉分頁 (無標題重複) | 0 |
| LINESIZE 20000 | 單行最大寬度,防截斷 | 大於最大行長 |
| TRIMSPOOL ON | 移除輸出行尾空白 | ON |
| TRIMOUT ON | 移除螢幕輸出行尾空白 | ON |
| HEADING OFF | 不輸出欄位標題 | OFF |
| COLSEP '|' | 欄位分隔符 (配合 SELECT 串接) | 依需求 , | \t |
| TERM OFF | 關閉終端機輸出,僅寫檔 | OFF |
執行方式
sqlplus user/pass@db @D:\czrk.sql
進階:動態產生欄位清單 (避免手寫 ||)
-- 產生 SELECT 串接字串
SELECT 'SELECT ' || LISTAGG(column_name, ' || '','' || ') WITHIN GROUP (ORDER BY column_id) || ' FROM ' || table_name
FROM user_tab_columns
WHERE table_name = 'M_CZRK';
大量資料效能建議
- 單次匯出 < 100 萬筆用 SPOOL 即可。
- 超過百萬筆建議改用 SQL*Loader UNLOAD、外部表 或 Data Pump (EXPDP),效能優於 SPOOL 數倍。
- 啟用
ARRAYSIZE (如 SET ARRAYSIZE 5000) 減少網路往返。