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

Excel 資料匯入 Oracle 實戰:SQL*Loader 制表符分隔檔案載入完整步驟

     編輯:Oracle 資料庫基礎

將 Excel 資料大量載入 Oracle,SQL*Loader 是最高效路徑。本文以 Excel → 制表符分隔文字檔 → SQL*Loader 控制檔 → 載入資料表 為主線,完整記錄從建表、檔案轉換、控制檔撰寫、命令執行到驗證的端到端流程。

前置準備

  1. Excel 2000 輸入資料 → 另存為 制表符分隔文字檔 test.txt(編碼 ANSI/UTF-8 需與資料庫字元集一致)
  2. SQL*Plus 以 system/manager 登入建立目標表

1. 建立目標表

CONN system/manager

CREATE TABLE test (
  id          NUMBER,           -- 序號
  username    VARCHAR2(10),     -- 使用者名稱
  password    VARCHAR2(10),     -- 密碼
  sj          VARCHAR2(20)      -- 建立日期
);

2. 撰寫 SQL*Loader 控制檔

檔名:input.ctl(儲於 C:\)

LOAD DATA
INFILE 'test.txt'
APPEND INTO TABLE test
FIELDS TERMINATED BY X'09'    -- 制表符 Tab (十六進位 09)
(
  id,
  username,
  password,
  sj
)

關鍵選項說明

3. 執行載入命令

本地資料庫

C:\> sqlldr userid=system/manager control=input.ctl
  • 預設日誌:input.log
  • 壞記錄檔:input.bad
  • 捨棄檔:input.dsc(若有 WHEN 條件)

遠端資料庫

C:\> sqlldr userid=system/manager@serviceName_192.168.1.248 control=input.ctl

4. 驗證結果

  1. SQL*Plus 查詢:SELECT * FROM test;
  2. 對照 input.log 載入筆數、錯誤筆數與原始 test.xls
  3. 檢查 input.bad 分析失敗原因(資料型別不符、長度超限、約束違反)

進階技巧

  • 日期欄位:控制檔加 sj DATE 'YYYY-MM-DD HH24:MI:SS' 指定格式
  • 序號自動產生:id SEQUENCE(MAX,1) 或 id EXPRESSION "seq.nextval"
  • 大檔案並行:PARALLEL=TRUE + 多控制檔分區載入
  • Direct Path Load:DIRECT=TRUE 繞過 SQL 層直寫資料區塊,極大提升速度(需獨佔表)
  • External Table:10g+ 可用 CREATE TABLE ... ORGANIZATION EXTERNAL 以 SQL 直接查詢文字檔

結語

Excel → 制表符文字檔 → SQL*Loader 是中小量異構資料載入的黃金組合。掌握 FIELDS TERMINATED BY X'09'、APPEND/REPLACE/TRUNCATE、DIRECT=TRUE 三大關鍵,即能應對 90% 實務場景。超大量資料請改用 Data Pump 或 External Table + Parallel DML。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
選項含義
INSERT預設,要求表為空
APPEND追加模式,保留既有資料
REPLACE刪除舊資料再載入
TRUNCATE截斷表再載入(高水位歸零)