熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

將文件導入到數據庫中的方法小結

2013-11-13 22:13:25  來源: Oracle 

  大型的數據庫開發中常常遇到數據源是平面文件的情況對於這樣的數據源無法使用數據庫對其數據進行有效的管理   本文介紹幾種常見的數據導入的方法希望能夠給讀者以啟迪另外本文所涉及到的數據庫均為ORACLE數據庫其實對於其他數據庫而言方法類似
  
   Sql*:Loader
  
  該方法是Oracle數據庫下數據導入的最重要的方法之一該工具由Oracle客戶端提供其基本工作原理是首先要針對數據源文件制作一個控制文件控制文件是用來解釋如何對源文件進行解析其中需要包含源文件的數據格式目標數據庫的字段等信息一個典型的控制文件為如下形式
  
  LOAD DATA
  INFILE /orai/fengjie/agent/data/ipaagentdetailtxt
  TRUNCATE
  INTO TABLE fj_ipa_agentdetail
  fields terminated
  trailing nullcols
  ( AGENT_NO char
  AGENT_NAME char
  AGENT_ADDRESS char
  AGENT_LINKNUM char
  AGENT_LINKMAN char
  )
  
  其中INFILE /orai/fengjie/agent/data/ipaagentdetailtxt指明所要導入的源文件其實源文件也可以直接通過命令行來輸入獲得fj_ipa_agentdetail為目標表的名字fields terminated 是指源文件的各個字段是以逗號分隔trailing nullcols表示遇到空字段依然寫入到數據庫表中最後這5個字段是目標數據庫表的字段結構通過上面這個典型的控制文件的格式分析可知控制文件需要與源文件的格式信息一致否則導入數據會出現異常
  
  除了控制以外sql*loader的還需要數據文件即源文件根據格式的不同源文件可以分為固定字段長度和有分隔符這兩大類這裡將分別說明這兩種情況
  
  固定字段長度的文本文件
  
  就是每個字段擁有固定的字段長度比如
  
  
  
  
  
  
  
  
  有分隔符的文本文件
  
  就是每個字段都有相同的分隔符分隔比如
  
  上海長途電信綜合開發公司南京東路
  上海桦奇通訊科技有限公司武寧路
  上海邦正科技發展有限公司南京東路
  
  對於上述兩種文件格式sql*loader均可以做處理下面就前面那個固定長度的文本來舉例說明
  
  由於該文本只有兩個字段一個為設備號一個是區局編號兩者的長度分別為20和5那麼可以編制控制文件如下
  
  LOAD DATA
  INFILE /orai/fengjie/agent/data/ipaagenttxt
  TRUNCATE
  INTO TABLE fj_ipa_agent
  ( DEVNO POSITION(:) CHAR
  BRANCH_NO POSITION(:) CHAR
  )
  
  其中/orai/fengjie/agent/data/ipaagenttxt為該文件的完全路徑POSITION(M:N)表示該字段是從位置M到位置N
  
  對於有分隔符的數據文件前面已經有一個例子這裡就不再贅述了總之使用Sql*Loader能夠輕松將數據文件導入到數據庫中這種方法也是最常用的方法
  
   使用專業的數據抽取工具
  
  目前在數據倉庫領域中數據抽取與裝載(ETL)是一重要的技術這一技術對於一些大的數據文件或者文件數量較多尤其適合這裡簡單介紹目前一款主流的數據抽取工具――Informatica
  
  該工具主要采用圖形界面進行編程其主要工作流程是首先將源數據文件的結構(格式)導入為Informatica裡然後根據業務規則對該結構進行一定的轉換(transformation)最終導入到目標表中
  
  以上過程僅僅只是做了一個從源到目標的映射數據的實際抽取與裝載需要在工作流(workflow)裡進行
  
  使用專業的數據抽取工具可以結合業務邏輯對多個源數據進行joinunioninsect等操作適合於大型數據庫和數據倉庫
  
   使用Access工具導入
  
  可以直接在Access裡選擇打開文本文件這樣按照向導來導入一個文本文件到Access數據庫中然後使用編程的方法將其導入到最終的目標數據庫中
  
  這種方法雖然煩瑣但是其對系統的軟件配置要求相對較低所以也是有一定的使用范圍
  
   小結
  

  總之平面文件轉化為數據庫格式有利於數據的處理顯然數據庫強大的數據處理能力比直接進行文件I/O效率高出很多希望本文能夠對該領域做一個拋磚引玉的作用
From:http://tw.wingwit.com/Article/program/Oracle/201311/18530.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.