大型的開發中常常遇到數據源是平面文件(如文本文件)的情況,對於這樣的數據源,無法使用數據庫對其數據進行有效的管理,另外也無法使用SQL語句對其進行查詢和操作,所以當務
下面介紹幾種常見的數據導入的方法,希望能夠給大家啓迪。另外,本文所涉及到的數據庫均爲ORACLE數據庫,其實對於其他數據庫而言,方法類似。
一、Sql*:Loader
該方法是Oracle數據庫下數據導入的最重要的方法之一,該工具由Oracle客戶端提供,
其基本工作原理是:首先要針對數據源文件製作一個控制文件,控制文件是用來解釋如何對源文件進行解析,其中需要包含源文件的數據格式、目標數據庫的字段等信息,一個典型的控制文件爲如下形式:
LOAD DATA
INFILE '/ora9i/fengjie/agent/data/ipaagentdetail200410.txt'
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 '/ora9i/fengjie/agent/data/ipaagentdetail200410.txt'指明所要導入的源文件,其實源文件也可以直接通過命令
除了控制以外,sql*loader的還需要數據文件,即源文件。根據格式的不同,源文件可以分爲固定字段長度和有分隔符這兩大類,這裏將分別說明這兩種情況:
1001,上海長途電信綜合開發公司,南京東路34號140室
1002,上海樺奇通訊科技有限公司,武寧路19號1902室
1003,上海邦正科技發展有限公司,南京東路61號903室
二、 使用專業的數據抽取工具
目前在數據倉庫領域中,數據抽取與裝載(ETL)是一重要的技術,這一技術對於一些大的數據文件或者文件數量較多尤其適合。這裏簡單介紹目前一款主流的數據抽取工具
該工具主要採用圖形界面進行編程,其主要工作流程是:首先將源數據文件的結構(格式)導入爲Informatica裏,然後根據業務規則對該結構進行一定的轉換(transformation),最終導入到目標表中。
以上過程僅僅只是做了一個從源到目標的映射,數據的實際抽取與裝載需要在工作流(workflow)裏進行。
使用專業的數據抽取工具,可以結合業務邏輯對多個源數據進行join,union,insect等操作,適合於大型和數據倉庫。數據庫
三、 使用Access工具導入
可以直接在Access裏選擇‘打開‘文本文件,這樣按照嚮導來導入一個文本文件到Access中,然後使用編程的方法
這種方法雖然煩瑣,但是其對系統的軟件配置要求相對較低,所以也是有一定的使用範圍。數據庫
四、 小結
總之,平面文件轉化爲數據庫格式有利於數據的處理,顯然,數據庫強大的數據處理能力比直接進行文件I/O效率高出很多,希望本文能夠對該領域做一個拋磚引玉的作用。