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

平面文件導入 Oracle 實戰:SQL*Loader、Informatica ETL 與 Access 過渡方案

     編輯:Oracle 資料庫基礎

前言:數據源頭多半是文本

大型系統開發常面臨平面文件(Flat File)入庫需求。資料庫強大的集合運算、索引、並發控制遠勝文件 I/O。本文針對 Oracle 環境(他庫同理),比較三種主流導入路徑:SQL*Loader 原生工具、Informatica 企業級 ETL、Access 過渡方案。

方案一:SQL*Loader —— 原生、輕量、最高效

Oracle Client 附帶,核心兩件事:控制檔描述解析規則 + 數據檔提供內容。

控制檔關鍵字句

LOAD DATA
INFILE '/ora9i/fengjie/agent/data/ipaagentdetail200410.txt'
TRUNCATE INTO TABLE fj_ipa_agentdetail
FIELDS TERMINATED BY "," 
TRAILING NULLCOLS
( AGENT_NO CHAR,
  AGENT_NAME CHAR,
  AGENT_ADDRESS CHAR,
  AGENT_LINKNUM CHAR,
  AGENT_LINKMAN CHAR )
  • INFILE:數據檔完整路徑(也可命令列傳入)。
  • TRUNCATE:載入前清空表(APPEND 為追加)。
  • FIELDS TERMINATED BY:分隔符格式(CSV、Tab 等)。
  • TRAILING NULLCOLS:缺欄位視為 NULL 而不報錯。
  • 欄位清單順序對應表結構,型別聲明(CHAR, DATE "YYYYMMDD", INTEGER EXTERNAL 等)。

固定寬度格式範例

數據樣本:602530005922 1012(設備號 20 碼 + 區局號 5 碼)

LOAD DATA
INFILE '/ora9i/fengjie/agent/data/ipaagent200410.txt'
TRUNCATE INTO TABLE fj_ipa_agent
( DEVNO     POSITION(1:20)  CHAR,
  BRANCH_NO POSITION(21:25) CHAR )

POSITION(m:n) 指定字元位置範圍(從 1 起算)。

執行命令

sqlldr userid=scott/tiger control=loader.ctl log=loader.log bad=loader.bad discard=loader.dsc
  • bad 檔:格式不符被拋棄的行。
  • discard 檔:不滿足 WHEN 條件的行。
  • 支援 DIRECT=TRUE 直寫數據塊,繞過 SQL 層,大幅提速。

方案二:Informatica PowerCenter —— 企業級 ETL 標準

適用:多源異構、複雜轉換、大數據量、調度監控、血緣分析。

核心流程

  1. Source Definition:導入文件結構(定長/分隔符/Excel/XML/COBOL)。
  2. Transformation:Expression/Joiner/Aggregator/Lookup/Router 等 30+ 轉換元件,實現清洗、合併、代碼轉換、鍵值生成等業務邏輯。
  3. Target Definition:映射至目標表(Oracle/平台無關)。
  4. Mapping:連接上述三層,形成源→目標邏輯圖。
  5. Session & Workflow:設定運行參數(批次大小、錯誤處理、Commit 間隔)、排程依賴、郵件通知、恢復策略。

優勢:圖形化開發、版本控制、元數據管理、集群負載均衡、推送下推優化(Pushdown Optimization)將邏輯下推資料庫執行。

方案三:Access 過渡 —— 低門檻、臨時救急

  1. Access「取得外部資料」→ 文字檔 → 精靈導入 → 建立本地表。
  2. VBA/ADO/DAO 程式碼讀取 Access 表,批次寫入 Oracle(Linked Table 或 Pass-through Query)。

缺點:雙重導入、Access 2GB 限制、Jet Engine 效能弱、不支援並發大批次。優勢:無需額外授權、非技術人員可操作、離線環境可用。

方案選型決策樹

場景推薦方案理由
單一來源、固定格式、定時批次、<500萬行SQL*Loader (+ Shell 排程)零成本、極速、維護簡單
多源聯接、複雜清洗、CDC、審計追蹤Informatica / Data Integrator元數據驅動、企業級治理
一次性遷移、用戶自助、無開發資源Access / Excel Power Query門檻最低、即時可見結果
雲原生、Serverless、流式微批次Oracle Cloud Data Integration / Kafka Connect托管、彈性擴縮

最佳實踐清單

  • 導入前 DISABLE CONSTRAINTS、UNUSABLE INDEXES,載入後 REBUILD + ENABLE。
  • 大表用 DIRECT=TRUE + PARALLEL(Enterprise Edition)。
  • 日期/數字格式在控制檔顯式聲明,避免 NLS 環境差異導致錯誤。
  • 建立 BAD/DISCARD 檔自動巡檢機制,異常即時告警。
  • 元數據化控制檔:參數化路徑、表名、欄位,支援多環境部署。

結語

「平面文件入庫」看似基礎,實則關係數據質量第一關。SQL*Loader 是利刃,Informatica 是軍團,Access 是拐杖。按數據量、複雜度、治理要求選對工具,並建立標準化、可監控、可重試的導入管線,才是長久之計。

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