首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL*Loader 大量資料載入 Oracle 實戰教學

     編輯:Oracle 資料庫相關知識

SQL*Loader 是資料倉庫大量載入資料的首選工具,支援 DIRECT、PARALLEL 等高效模式。本文以實際案例帶您快速掌握核心用法,跳過枯燥理論,直擊操作重點。

一、認識 SQL*Loader 執行介面

  • Windows:SQLLDR
  • Unix/Linux:sqlldr 或 sqlload

執行 sqlldr 可查看關鍵字參數說明,常用參數包括:

參數說明預設值
userid帳號/密碼-
control控制檔名稱-
log記錄檔名稱-
bad錯誤資料檔-
data資料檔名稱-
direct直接路徑載入FALSE
parallel平行載入FALSE
rows綁定陣列筆數/直接路徑儲存點常規 64 / 直接路徑全部
errors允許錯誤筆數50

二、實戰範例:CSV 匯入

1. 來源資料 result.csv

1,預設 Web 站點,192.168.2.254:80:,RUNNING
2,other,192.168.2.254:80:test.com,STOPPED
3,third,192.168.2.254:81:thirdabc.com,RUNNING

四欄位,逗號分隔,最後一欄以空白結尾。

2. 控制檔 result.ctl

load data
infile 'result.csv'
into table resultxt
(resultid char terminated by ',',
 website char terminated by ',',
 ipport char terminated by ',',
 status char terminated by whitespace)

說明:

  • infile 指定資料檔;省略 badfile、discardfile 會自動產生同名檔。
  • into table resultxt 預設 INSERT 模式,可改 APPEND 追加或 REPLACE 覆蓋。
  • terminated by ',' 指定欄位分隔符;最後欄用 whitespace。

3. 執行載入

D:> sqlldr userid=fancy/testpass control=result.ctl log=resulthis.out

4. 常見錯誤與對策

若出現 ORA-04043: 物件 RESULTXT 不存在,表示目標表未建立。需先在資料庫建表:

create table resultxt
(resultid varchar2(500),
 website varchar2(500),
 ipport varchar2(500),
 status varchar2(500));

三、進階技巧

  • 直接路徑:加參數 direct=true,繞過 SQL 引擎直接寫入資料塊,速度大幅提升。
  • 平行載入:parallel=true 搭配多個資料檔與控制檔,發揮多核效能。
  • 大檔案切分:配合 FILESIZE 參數控制單一 dump 檔大小。

總結

掌握「控制檔寫法」+「參數調校」是用好 SQL*Loader 的關鍵。建議先在測試環境跑通流程,再套用至正式環境。

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