亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用SQL*Loader快速導(dǎo)入Oracle?。保埃鐢?shù)據(jù)表

        2009-04-23 10:03:58李俊超
        新媒體研究 2009年6期

        [摘要]SQL*Loader是Oracle的高速批量數(shù)據(jù)加載工具,它具有速度快、對Oracle數(shù)據(jù)庫的控制功能強等優(yōu)點。介紹如何利用SQL*Loader快速導(dǎo)入數(shù)據(jù)的方法,以實例的形式演示執(zhí)行過程,并結(jié)合實例對一些參數(shù)做說明。

        [關(guān)鍵詞]SQL*Loader Oracle SQL

        中圖分類號:TP3文獻標(biāo)識碼:A文章編號:1671-7597(2009)0320035-01

        SQL*LOADER是ORACLE的數(shù)據(jù)加載工具,通常用來將操作系統(tǒng)文件遷移到ORACLE數(shù)據(jù)庫中。傳統(tǒng)的導(dǎo)入Oracle數(shù)據(jù)庫的方法是使用import命令導(dǎo)入數(shù)據(jù),這種導(dǎo)入方式命令簡單,但是速度比較慢,如果導(dǎo)入100M左右的數(shù)據(jù)大約需要半個多小時。使用SQL*Loader(SQLLDR)可以快速的導(dǎo)入大量數(shù)據(jù),100M左右的數(shù)據(jù)幾秒鐘就可以加載完。

        SQL*Loader從控制文件導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫中,功能包括:從定界文件裝數(shù)據(jù),從固定長度的文本文件裝數(shù)據(jù),從二進制文件裝數(shù)據(jù),在輸入文件中過濾數(shù)據(jù)等。SQL*Loader使用的數(shù)據(jù)類型包括:Char:該char和數(shù)據(jù)庫中的char類型不同,它包括數(shù)據(jù)庫中的char、varchar、CLOB等類型;Date:時間類型;Interger external:定義整數(shù)值;Decimal external:定義包括小數(shù)點的數(shù)值。

        要使用SQLLDR,需要有一個控制文件,控制文件是以*.ctl為后綴的,Oracle SQL*Loader 使用控制文件來裝載數(shù)據(jù)??刂莆募淦鸬淖饔镁褪墙?shù)據(jù)文件與Oralce數(shù)據(jù)表字段之間的一一對應(yīng)關(guān)系。簡單的說,把數(shù)據(jù)文件中的某個內(nèi)容放在Oracle數(shù)據(jù)表中的那個字段上,這就是控制文件所起的主要作用??刂莆募邪斎霐?shù)據(jù)的類型和格式以及在數(shù)據(jù)表中的順序,在制作數(shù)據(jù)文件的時候,需要注意原有數(shù)據(jù)表的限制。也就是說,數(shù)據(jù)文件中的記錄必須符合數(shù)據(jù)表的一些約束條件,否則,不符合條件的數(shù)據(jù)將無法被導(dǎo)入。如需要考慮數(shù)據(jù)類型是否相符、字段長度有沒有超過限制、有沒有違反主鍵、外鍵的約束等等。只有符合這些約束的記錄,才能夠被成功的導(dǎo)入。否則的話,數(shù)據(jù)將無法被成功裝載。下面將用一個例子建立一個簡單的控制文件,并對相關(guān)指令進行解釋便于理解。

        (1)LOAD DATA

        (2)INFILE*

        (3)into table Assign

        (4)replace

        (5)fields terminated by ','

        (6)(id,

        name,

        old date 'dd/mm/yyyy')

        (7)begindata

        (8)1,jim,13/3/1982

        (9)2,Lucy,11/10/1979

        LOAD DATA:告訴SQLLDR加載數(shù)據(jù)。

        INFILE*:告訴SQLLDR要加載的數(shù)據(jù)包含在控制文件本身中,如第6-8行所示。

        Into table Assign:告訴SQLLDR要把數(shù)據(jù)加載到哪個表中。

        Replace:如何去加載數(shù)據(jù)。有如下的指令:insert、append、truncate或replace。要執(zhí)行insert,所要加載的數(shù)據(jù)表就要求為空。如果表中已有記錄,可以使用append向表中增加記錄。如果想替換表中的記錄可以使用replace或truncate。replace使用的是傳統(tǒng)的delete語句,如果要加載的表中已經(jīng)包含很多記錄,這個操作可能執(zhí)行的很慢。Truncate則不同,它使用truncate SQL命令,通常會更快的執(zhí)行,因為它不必物理的刪除每一行。

        fields terminated by',':告訴SQLLDR數(shù)據(jù)的形式應(yīng)該是用逗號分隔的值。

        (id,name,old):這是所要加載的列,這些列告訴SQLLDR加載數(shù)據(jù)的順序和數(shù)據(jù)類型。

        Begindate:表明已經(jīng)完成對輸入數(shù)據(jù)的描述,后面的行就是要加載到Assign表中的具體數(shù)據(jù)。

        每個加載都會生存一個日志文件。SQL*Loader日志文件指定裝載操作的細節(jié),日志文件會告訴我們關(guān)于加載的很多方面,從中可以看到我們所用的選項(默認值或非默認值);可以看到讀取了多少記錄,加載了多少記錄等。這個日志文件對于驗證加載是否成功至關(guān)重要,另外對于診斷錯誤也很有意義,如果所加載的數(shù)據(jù)導(dǎo)致SQL錯誤,這些錯誤就會記錄在這個日志文件中。這個日志文件是以表名為名稱的.log文件,例如前面舉例的assign表,它的日志文件為assign.log.日志文件里面介紹了關(guān)于加載的很多方面,從中可以看到讀取了多少記錄,加載了多少記錄,加載控制文件用了多長時間等等。日志文件對于驗證加載是否成功很重要,另外對于診斷錯誤也很有意義。由于日志文件里寫得很詳細,這里就不再具體解釋了。

        使用SQLLDR需要注意一個問題:字段長度。SQLLDR默認的使用CHAR(255),即默認的輸入字段長度為255字符。如果你要導(dǎo)入的表中的字段比這要長,就會接收到一個錯誤消息:

        Record N:RejectedError on table X,column C.

        Field in data file exceeds maximum length

        解決此問題的方法就是在相應(yīng)的字段后面加上CHAR(N),N為要指定的長度。

        還有一個需要注意的問題就是如何加載日期。加載日期方面經(jīng)常導(dǎo)致出錯。如果要加載日期需要在控制文件中使用DATE數(shù)據(jù)類型,并指定要使用的日期格式。這個日期格式與數(shù)據(jù)庫中TO_CHAR和TO_DATE中使用的日期格式是一樣的。例如上例中指定的日期格式:dd/mm/yyyy.只要在控制文件中應(yīng)用日期格式并且指定關(guān)鍵字DATE,SQLLDR就會自動完成日期的轉(zhuǎn)換。

        通過以上簡單介紹我們不僅了解了SQL*Loader的優(yōu)點,而且學(xué)習(xí)了利用SQL*Loader導(dǎo)入數(shù)據(jù)的方法。當(dāng)然這只是一個初步了解,如果讀者想了解更加詳細的內(nèi)容,請參考Oracle Utilities手冊,里面有關(guān)于SQLLDR的詳細使用方法和各個參數(shù)的解釋。

        參考文獻:

        [1]蘇金國、王小振等,Oracle 9i&10g編程藝術(shù),人民郵電出版社,2006,10.

        [2]Thomas Kyte,Expert Oracle Database Architecture 9i and 10g Programming Techniques and Solutions,Posts & Telecom Press,2006.

        [3]許珂、盧泉、張國強,Oracle數(shù)據(jù)庫基礎(chǔ),清華大學(xué)出版社,2007,5.

        作者簡介:

        李俊超,黨員,湖北人,現(xiàn)就讀太原理工大學(xué)研究生學(xué)院,研究方向為數(shù)據(jù)通信與計算機網(wǎng)絡(luò)。

        人人妻人人澡人人爽国产一区| 国产精品一区二区久久毛片| 成人自拍三级在线观看| 欧洲美女黑人粗性暴交视频| 无码av无码天堂资源网| 在线播放国产女同闺蜜| 久久亚洲精品成人av观看| 亚洲中文久久精品字幕| 尤物网址在线观看| 亚州精品无码人妻久久| 蜜桃色av一区二区三区麻豆| 精品一二三四区中文字幕| 国产综合无码一区二区色蜜蜜| 精品无码久久久久久久久粉色| 国产一区二区在三区在线观看 | 亚洲高清乱码午夜电影网| 色婷婷欧美在线播放内射| 亚洲AV无码成人精品区H| 亚洲第一女人的天堂av| 波多野结衣的av一区二区三区| 国产成人国产在线观看入口| 韩国美女主播国产三级| 国产毛片视频一区二区| 久久久无码人妻精品一区| 亚洲动漫成人一区二区| 中文字幕亚洲中文第一| 亚洲欧洲成人精品香蕉网| 76少妇精品导航| 国产91精品丝袜美腿在线| 久久红精品一区二区三区| 强行无套内谢大学生初次| 久久一日本道色综合久久大香 | 色综合久久中文字幕综合网| 亚洲av永久无码精品国产精品| 四虎精品国产一区二区三区| 亚洲av日韩精品一区二区| 国产美女精品视频线免费播放软件 | 久久精品熟女亚洲av香蕉| 中文无码一区二区不卡av| 无码日韩人妻AV一区免费| 精品一区二区三区国产av|