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

使用 SQL*Loader 將 Excel 資料匯入 Oracle:圖文完整教學

     編輯:Oracle 資料庫基礎

目標:Excel → 文字檔 → Oracle 資料表

SQL*Loader (sqlldr) 是 Oracle 高效能大量載入工具,支援固定寬度、分隔符、變長記錄等格式。本文示範 Excel 另存為 Tab 分隔文字檔,再用 sqlldr 匯入的標準流程。

步驟 1:Excel 準備與另存

  1. 開啟 Microsoft Excel 2000+,建立新活頁簿。
  2. 輸入測試資料 (欄位:ID、USERNAME、PASSWORD、SJ)。
  3. 儲存為 test.xls (備份原檔)。
  4. 另存為 → 存檔類型選 「文字檔 (Tab 分隔) (*.txt)」 → 檔名 test.txt → 存放 C:\。

產生的 test.txt 內容範例:

1	user1	pass1	2023-01-01
2	user2	pass2	2023-01-02
3	user3	pass3	2023-01-03

步驟 2:建立目標資料表

CONN system/manager
CREATE TABLE test (
  id        NUMBER,
  username  VARCHAR2(10),
  password  VARCHAR2(10),
  sj        VARCHAR2(20)
);

步驟 3:編寫 Control File (控制檔)

檔名:C:\input.ctl (記事本編輯)

LOAD DATA
INFILE 'test.txt'
APPEND INTO TABLE test
FIELDS TERMINATED BY X'09'
(id, username, password, sj)

關鍵參數說明

子句說明
LOAD DATA控制檔標識
INFILE 'test.txt'資料來源檔案
APPEND追加模式 (其他:INSERT 需空表、REPLACE/TRUNCATE 先清空)
FIELDS TERMINATED BY X'09'欄位分隔符為 Tab (十六進位 09)
(id, username, password, sj)對應資料表欄位順序

步驟 4:執行 SQL*Loader

開啟 CMD (命令提示字元):

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

遠端資料庫:

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

步驟 5:驗證結果

  • 預設產生 input.log (執行日誌) 與 input.bad (壞記錄檔)。
  • 檢查 input.log:Rows successfully loaded、Rows not loaded due to data errors。
  • 登入 SQL*Plus 查詢:SELECT * FROM test; 對比 Excel 原始筆數。

進階技巧與常見問題

場景解決方案
欄位含逗號/雙引號使用 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (CSV 格式)
日期格式轉換控制檔加 sj DATE 'YYYY-MM-DD' 或 SQL*Loader 內建轉換
大檔案效能DIRECT=TRUE (直徑路徑載入,繞過 SQL 層)、ROWS=10000 (提交頻率)、READSIZE/BINDSIZE 調大
跳過標題行INFILE 'test.txt' SKIP=1
多檔案載入INFILE 'data1.txt' INFILE 'data2.txt'
錯誤記錄分析檢視 .bad 檔與 .log 錯誤行號,修正資料或控制檔

自動化腳本範例 (Windows Batch)

@echo off
set ORACLE_SID=ORCL
set CTL=C:\loader\input.ctl
set LOG=C:\loader\input_%date:~-4,4%%date:~-10,2%%date:~-7,2%.log
sqlldr userid=system/manager control=%CTL% log=%LOG%
if errorlevel 1 (
  echo SQL*Loader FAILED, check %LOG%
  exit /b 1
)
echo SQL*Loader SUCCESS

結語

「Excel → Tab 文字檔 → SQL*Loader」是最通用、零成本的中小資料量匯入方案。掌握控制檔語法 (FIELDS TERMINATED BY, APPEND/REPLACE, DATE FORMAT) 並善用 DIRECT=TRUE 大幅提升大檔案載入效能。配合批次腳本與排程,即可構建穩定的 ETL 入口管線。

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