如何理解SQL*Loader工具,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
創(chuàng)新互聯(lián)公司服務項目包括五家渠網(wǎng)站建設、五家渠網(wǎng)站制作、五家渠網(wǎng)頁制作以及五家渠網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,五家渠網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到五家渠省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
SQL*Loader工具是Oracle非常強大的外部數(shù)據(jù)加載工具。小編將簡單討論一下SQL*Loader工具的結構,配置以及突出特性。
下面是一張SQL*Loader工具的結構圖:
上圖中描述了SQL*Loader工作使用的物理文件,包括輸入的文本文件,輸出的數(shù)據(jù)庫;SQL*Loader工具工作需要至少一個控制文件,控制文件中包含了數(shù)據(jù)加載的描述性信息,SQL*Loader根據(jù)控制文件中的描述來加載、轉換數(shù)據(jù),寫入數(shù)據(jù)庫。控制文件中除了包含數(shù)據(jù)加載的描述性信息外,還可以包含參數(shù)信息和加載的數(shù)據(jù)。參數(shù)信息包括,直接路徑加載參數(shù)等,可以通過sqlldr工具的parfile參數(shù)指定單獨的配置文件,這里需要注意的是,在sqlldr命令行指定的參數(shù)將覆蓋在控制文件中指定的參數(shù)。單獨的數(shù)據(jù)文件是通過控制文件中的INFILE屬性指定的。
SQL*Loader工具運行后會產(chǎn)生3個文件,一個是日志文件,日志文件中詳細記錄了數(shù)據(jù)的加載情況和加載結果,并會另外指定兩個文件Bad FIles和Discard Files,Bad Files保存的是加載導致SQL錯誤(也就是說,輸入數(shù)據(jù)是“壞的”)的數(shù)據(jù),Discard Files保存的是加載過程拋棄的數(shù)據(jù)。加載完畢對這些文件的驗證能夠了解加載情況,判斷加載是否成功。
SQL*Loader支持傳統(tǒng)路徑和直接路徑加載,傳統(tǒng)路徑加載SQL*Loader工具會將數(shù)據(jù)轉換成SQL語句執(zhí)行,會產(chǎn)生相應的undo和redo數(shù)據(jù),直接路徑加載是直接操作數(shù)據(jù)塊,不會產(chǎn)生相應的undo和redo數(shù)據(jù),特別適合大數(shù)據(jù)量的加載工作。
通過上面的討論可以了解到SQL*Loader工具最核心的是控制文件,控制文件中最核心的配置是對加載數(shù)據(jù)的定義。下面通過一個簡單的例子討論控制文件中的配置:
/***************************************/
Load DATA
#表示加載數(shù)據(jù)。
INFILE 'C:\sqlldr\olap.date_time_15_min.txt'
#INFILE指定數(shù)據(jù)文件,如果是INFILE *,表示加載的數(shù)據(jù)保存在控制文件中。
INTO TABLE test.date_time_15_min
#數(shù)據(jù)加載到的具體表名。
APPEND|REPLACE|TRUNCATE
#如果沒有這行,默認是INSERT操作,要求表必須為空,TRUNCATE操作非傳統(tǒng)意義上的TRUNCATE TABLE DATE_TIME_15_MIN,而是執(zhí)行TRUNCATE TABLE DATE_TIME_15_MIN REUSE STORAGE操作,這點需要注意。
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
#數(shù)據(jù)的存儲是以,符號作為分割,"符號引起來的表示字符串,這是定界加載,這是最傳統(tǒng)的方式,另外還可以定長加載,這里我們不討論。
TRAILING NULLCOLS
#如果輸入的數(shù)據(jù)不存在某列的數(shù)據(jù),SQLLOADER就會為該列綁定一個NULL值。
(APPLIEDTIME "to_date(:appliedtime,'yyyy-mm-dd hh34:mi:ss')",
#以(符號開始表示表的字段,由于是日期字段,所以需要使用函數(shù)進行轉換,函數(shù)必須用雙引號引起來,:appliedtime是跟前面的APPLIEDTIME相對應。
applieddate "to_date(:applieddate,'yyyy-mm-dd hh34:mi:ss')",
psvcode,
#如果字段沒有指定存儲類型,默認為CHAR(255),超過長度會收到Fileld in data file exceeds maximum length的報錯,只需要根據(jù)長度指定類型,例如,CHAR(1000)。
hzpsvcode,
pointindex,
appliedhour "to_date(:appliedhour,'yyyy-mm-dd hh34:mi:ss')"
)
BEGINDATA
#下面是加載的數(shù)據(jù),對應上面的INFILE *設置。
........
/***************************************/
控制文件除了定義數(shù)據(jù)加載方式外,還可以保存SQLLOADER參數(shù)和加載的數(shù)據(jù)。
另外,從Oracle 9i開始,Oracle推出了外部表的功能,外部表是另一種快速加載數(shù)據(jù)的方式,沿用了SQL*Loader的參數(shù),用于替代SQL*Loader工具,它比SQL*Loader工具有更好的靈活性,能夠更靈活的處理、篩選數(shù)據(jù)(SQL語句方面),調度數(shù)據(jù)的加載,學習的知識也相對更少。
從Oracle Database 10g開始,Oracle推出外部表卸載功能ORACLE_DATAPUMP能夠非常方便的將數(shù)據(jù)卸載到平面文件,通過平面文件的傳遞可以快速加載到其他數(shù)據(jù)庫。Oracle沒有提供專門工具用于將數(shù)據(jù)庫的數(shù)據(jù)卸載到平面文件中,可以用SQL語句、外部表卸載功能、PL/SQL等等方式完成數(shù)據(jù)的卸載。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
網(wǎng)站名稱:如何理解SQL*Loader工具
轉載來源:http://aaarwkj.com/article2/pegdoc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿建站、做網(wǎng)站、電子商務、建站公司、Google、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)