首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle SPOOL命令匯出資料的兩種方法效能比較

     編輯:Oracle 資料庫基礎

使用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"
...

兩種SPOOL方法深度比較

方法一:使用COLSEP由SQL*Plus自動分隔

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

方法二:在SELECT中手工串聯分隔符

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稍繁瑣,但能精確控制輸出格式,大幅降低後續匯入失敗風險,避免走彎路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved