<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      302 隨筆 :: 26 文章 :: 82 評(píng)論 :: 0 Trackbacks
    SQL*Loader使用介紹
    ?
    ?
    ??? 今天學(xué)習(xí)一下使用SQL*Loader導(dǎo)入數(shù)據(jù)的方法。首先看一下對(duì)于SQLLDR命令的介紹:
    ?
    ??? sqlldr.jpg
    ?
    ?
    1、SQL*Loader的基本特點(diǎn):
    ?
    ??? 01. 能裝入不同數(shù)據(jù)類(lèi)型文件及多個(gè)數(shù)據(jù)文件的數(shù)據(jù)
    ??? 02. 可裝入固定格式、自由定界以及可度長(zhǎng)格式的數(shù)據(jù)
    ??? 03. 可以裝入二進(jìn)制,壓縮十進(jìn)制數(shù)據(jù)
    ??? 04. 一次可對(duì)多個(gè)表裝入數(shù)據(jù)
    ??? 05. 連接多個(gè)物理記錄裝到一個(gè)記錄中
    ??? 06. 對(duì)一單記錄分解再裝入到表中
    ??? 07. 可以用?數(shù)對(duì)制定列生成唯一的Key
    ??? 08. 可對(duì)磁盤(pán)或磁帶數(shù)據(jù)文件裝入制表中
    ??? 09. 提供裝入錯(cuò)誤報(bào)告
    ??? 10. 可以將文件中的整型字符串,自動(dòng)轉(zhuǎn)成壓縮十進(jìn)制并裝入列表中。
    ?
    2、SQL*Loader各類(lèi)文件說(shuō)明:
    ?
    ??? ① 控制文件
    ??????? SQL*Loader根據(jù)控制文件找到需要加載的數(shù)據(jù),并且分析和解釋這些數(shù)據(jù)。控制文件由三個(gè)部分組成:
    ????????01. 全局選件、行、跳過(guò)的記錄數(shù)等;
    ????????02.?INFILE子句指定的輸入數(shù)據(jù);
    ????????03.?數(shù)據(jù)特性的說(shuō)明;
    ?
    ??? ② 輸入文件
    ??????? 需要在控制文件中指定輸入文件(INFILE)的格式,具體性質(zhì)如下:
    ??????? 01. 正常指定文件格式?INFILE 'example.dat'
    ??????? 02. 若導(dǎo)入的數(shù)據(jù)直接在控制文件中,則用 INFILE * ... BEGINDATA ...
    ??????? 03. 若導(dǎo)入數(shù)據(jù)在其他文件中,且每條記錄定長(zhǎng),則使用?INFILE 'example.dat' "FIX 11"
    ??????? 04. 若導(dǎo)入數(shù)據(jù)在其他文件中,且每條記錄不定長(zhǎng),則使用?INFILE 'example.dat' "VAR 3"
    ???????? 注:長(zhǎng)度包括分隔符,具體使用案例見(jiàn)下文
    ?
    ??? ③ 壞文件
    ??????? 壞文件包含那些被SQL*Loader拒絕的記錄,被拒絕的記錄可能是不符合要求的記錄。
    ??????? 壞文件的名字由SQL*Loader命令的BADFILE參數(shù)來(lái)給定。
    ??? ④ 日志文件及日志信息
    ??????? 當(dāng)SQL*Loader開(kāi)始執(zhí)行后,它就自動(dòng)建立日志文件。
    ??????? 日志文件包含有加載的總結(jié),加載中的錯(cuò)誤信息等。
    ?
    3、編寫(xiě)控制文件
    ?
    控制文件的格式如下:
    ?
    OPTIONS?
    ({[SKIP=integer] [LOAD = integer][ERRORS = integer] [ROWS=integer]
    ? [BINDSIZE=integer][SILENT=(ALL|FEEDBACK|ERROR|DISCARD)]})
    LOAD[DATA]
    [ { INFILE | INDDN } {file | * } ]
    [STREAM | RECORD | FIXED length [BLOCKSIZE size]|VARIABLE [length] ]
    [ {BADFILE | BADDN } file ]
    [ {DISCARDS | DISCARDMAX} integr ]
    [ {INDDN | INFILE} . . . ]
    [ APPEND | REPLACE | INSERT ]
    [RECLENT integer]
    [ { CONCATENATE integer |
    CONTINUEIF { [THIS | NEXT] (start[: end])LAST }
    Operator { 'string' | X 'hex' } } ]
    INTO TABLE [user.]table
    [APPEND | REPLACE|INSERT]
    [WHEN condition [AND condition]...]
    [FIELDS [delimiter] ]
    (
    column {
    RECNUM | CONSTANT value |
    SEQUENCE ( { integer | MAX |COUNT} [, increment] ) |
    [POSITION ( { start [end] | * [ + integer] }
    ) ]
    datatype
    [TERMINATED [ BY ] {WHITESPACE| [X] 'character' } ]
    [ [OPTIONALLY] ENCLOSE[BY] [X]'charcter']
    [NULLIF condition ]
    [DEFAULTIF condotion]
    }
    [ ,...]
    )
    [INTO TABLE...]
    [BEGINDATA]
    ?
    ?
    說(shuō)明:
    ?
    要加載的數(shù)據(jù)文件:
    ?
    ??? 01.INFILE和INDDN是同義詞,它們后面都是要加載的數(shù)據(jù)文件;如果用 * 則表示數(shù)據(jù)就在控制文件內(nèi);在INFILE后可以跟幾個(gè)文件;
    ??? 02.STRAM表示一次讀一個(gè)字節(jié)的數(shù)據(jù)。新行代表新物理記錄(邏輯記錄可由幾個(gè)物理記錄組成);
    ??? 03.RECORD使用宿主操作系統(tǒng)文件及記錄管理系統(tǒng)。如果數(shù)據(jù)在控制文件中則使用這種方法;
    ??? 0 4.FIXED length要讀的記錄長(zhǎng)度為length字節(jié);
    ??? 05.VARIABLE 被讀的記錄中前兩個(gè)字節(jié)包含的長(zhǎng)度,length記錄可能的長(zhǎng)度。缺省為8k字節(jié);
    ??? 06.BADFILE和BADDN同義,存放Oracle不能加載數(shù)據(jù)到數(shù)據(jù)庫(kù)的那些記錄;
    ??? 07.DISCARDFILE和DISCARDDN是同義詞,記錄沒(méi)有通過(guò)的數(shù)據(jù);
    ??? 0 8.DISCARDS和DISCARDMAX是同義詞,Integer為最大放棄的文件個(gè)數(shù)。
    ?
    ② 加載的方法:
    ?
    ??? 01.APPEND 給表添加行
    ??? 02.INSERT 給空表增加行(如果表中有記錄則退出)
    ??? 03.REPLACE 先清空表在加載數(shù)據(jù)
    ??? 04.RECLEN 用于兩種情況:
    ??????? 1> SQLLDR不能自動(dòng)計(jì)算記錄長(zhǎng)度
    ??????? 2> 或用戶(hù)想看壞文件的完整記錄時(shí)(Oracle只能按常規(guī)把壞記錄部分寫(xiě)到錯(cuò)誤的地方,如果看整條記錄,則可以將整條記錄寫(xiě)到壞文件中)
    ?
    ③ 指定最大的記錄長(zhǎng)度:
    ?
    ??? CONCATENATE允許用戶(hù)設(shè)定一個(gè)整數(shù),表示要組合邏輯記錄的數(shù)目。
    ?
    建立邏輯記錄:
    ?
    ??? 01. THIS 檢查當(dāng)前記錄條件,如果為真則連接下一個(gè)記錄。
    ??? 02. NEXT 檢查下一個(gè)記錄條件。如果為真,則連接下一個(gè)記錄到當(dāng)前記錄來(lái)。
    ????03. start:end 表示要檢查在THIS或NEXT字串是否存在繼續(xù)串的列,以確定是否進(jìn)行連接。
    ??????? 如:continueif next(1-3)='WAG' 或continueif next(1-3)=X'0d03if'
    ?
    指定要加載的表:
    ?
    ??? 01. INTO TABLE 要加的表名。
    ??? 02. WHEN 和select WHERE類(lèi)似。用來(lái)檢查記錄的情況,如:when(3-5)='SSM' and (22)='*'
    ?
    介紹并括起記錄中的字段:
    ?
    ??? FIELDS給出記錄中字段的分隔符,F(xiàn)IELDS格式為:
    ?
    ??? FIELDS [TERMIALED [BY] {WHITESPACE | [X] 'charcter'} ]
    ??? [[OPTIONALLY] ENCLOSE [BY] [X]'charcter' ]
    ?
    ??? 01. TERMINATED:讀完前一個(gè)字段即開(kāi)始讀下一個(gè)字段直到結(jié)束。
    ??? 02. WHITESPACE:是指結(jié)束符是空格的意思。包括空格、Tab、換行符、換頁(yè)符及回車(chē)符。如果是要判斷結(jié)束字符,可以用單引號(hào)括起,如X'1B'等。
    ??? 03. OPTIONALLY ENCLOSED:表示數(shù)據(jù)應(yīng)由特殊字符括起來(lái),也可以括在TERMINATED字符內(nèi),使用OPTIONALLY要同時(shí)用TERMINLATED。
    ??? 04. ENCLOSED:指兩個(gè)分界符內(nèi)的數(shù)據(jù)。如果同時(shí)用 ENCLOSED和TERMINAED ,則它們的順序決定計(jì)算的順序。
    ?
    ??? [X]算法 select utl_raw.cast_to_raw('gdj3') from dual;
    ?
    定義列:
    ?
    ??? column是表列名,列的取值可以是:

    ??? 01. BECHUM 表示邏輯記錄數(shù)。第一個(gè)記錄為1,第2個(gè)記錄為2。
    ??? 02. CONSTANT 表示賦予常數(shù)。
    ??? 03. SEQUENCE 表示序列可以從任意序號(hào)開(kāi)始,格式為:
    ????????? SEQUENCE ( { integer | MAX |COUNT} [,increment]
    ??? 04. POSITION 給出列在邏輯記錄中的位置。可以是絕對(duì)的,或相對(duì)前一列的值。格式為:
    ????????? POSITION ( {start[end] | * [+integer] } )
    ??? 05. Start 開(kāi)始位置
    ????????? * 表示前字段之后立刻開(kāi)始。
    ????????? + 從前列開(kāi)始向后條的位置數(shù)。
    ?
    定義數(shù)據(jù)類(lèi)型:
    ??? 可以定義14種數(shù)據(jù)類(lèi)型:
    ??? CHAR:字符類(lèi)型數(shù)據(jù),length缺省為1
    ??????? 格式:CHAR[(length)] [delimiter]

    ??? DATE:日期類(lèi)型數(shù)據(jù),使用to_date函數(shù)來(lái)限制
    ??????? 格式:DATE [(length)]['date_format'] [delimiter]

    ??? DECIMAL EXTERNAL:字符格式中的十進(jìn)制,用于常規(guī)格式的十進(jìn)制數(shù)
    ??????? 格式:DECIMAL EXTERNAL [(length)] [delimiter]
    ??? DECIMAL:壓縮十進(jìn)制格式數(shù)據(jù)
    ????????格式:DECIMAL (digtial [,divcision])

    ??? DOUBLE:雙精度符點(diǎn)二進(jìn)制
    ??????? 格式:DOUBLE

    ??? FLOAT:普通浮點(diǎn)二進(jìn)制
    ??????? 格式:FLOAT

    ??? FLOAT EXTERNAL:字符格式浮點(diǎn)數(shù)
    ??????? 格式:FLOAT EXTERNAL [(length)] [delimiter]
    ?
    ??? GRAPHIC:雙字節(jié)字符串?dāng)?shù)據(jù)
    ??????? 格式:GRAPHIC [(legth)]

    ??? GRAPHIC EXTERNAL:雙字節(jié)字符串?dāng)?shù)據(jù)
    ??????? 格式:GRAPHIC EXTERNAL[(legth)]

    ??? INTEGER:常規(guī)全字二進(jìn)制整數(shù)

    ??? INTEGER EXTERNAL:字符格式整數(shù)

    ??? SMALLINT:常規(guī)全字二進(jìn)制數(shù)據(jù)

    ??? VARCHAR:可變長(zhǎng)度字符串

    ??? VARGRAPHIC:可變雙字節(jié)字符串?dāng)?shù)據(jù)
    ?
    ?
    4、 數(shù)據(jù)文件的內(nèi)容
    ?
    ??? 數(shù)據(jù)文件可以是在OS下的一個(gè)文件;或跟在控制文件下的具體數(shù)據(jù)。數(shù)據(jù)文件可以是:
    ???? 01. 二進(jìn)制與字符格式:SQL*Loader可以把二進(jìn)制文件讀(當(dāng)成字符讀)到列表中;
    ????02. 固定格式:記錄中的數(shù)據(jù)、數(shù)據(jù)類(lèi)型、數(shù)據(jù)長(zhǎng)度固定;
    ????03. 可變格式:每個(gè)記錄至少有一個(gè)可變長(zhǎng)數(shù)據(jù)字段,一個(gè)記錄可以是一個(gè)連續(xù)的字符串;
    ??? 04. 數(shù)據(jù)段的分界(如姓名、年齡)如用','作字段的劃分;用'"'作數(shù)據(jù)括號(hào)等
    ????05. SQL*Loader可以使用多個(gè)連續(xù)字段的物理記錄組成一個(gè)邏輯記錄,記錄文件運(yùn)行情況文件,包括以下內(nèi)容:
    ??????? 1、運(yùn)行日期、軟件版本號(hào)
    ??????? 2、全部輸入、輸出文件名;對(duì)命令行的展示信息、補(bǔ)充信息,
    ??????? 3、對(duì)每個(gè)裝入信息報(bào)告:如表名,裝入情況;對(duì)初始裝入、加截或更新裝入的選擇情況
    ??????? 4、數(shù)據(jù)錯(cuò)誤報(bào)告:錯(cuò)誤碼;放棄記錄報(bào)告
    ??????? 5、每個(gè)裝X報(bào)告:裝入行、裝入行數(shù)、可能跳過(guò)行數(shù)、可能拒絕行數(shù)、可能放棄行數(shù)等
    ??????? 6、統(tǒng)計(jì)概要:使用空間(包大小、長(zhǎng)度)、讀入記錄數(shù)、裝入記錄數(shù)、跳過(guò)記錄數(shù);拒絕記錄數(shù)、放棄記錄數(shù);運(yùn)行時(shí)間等。
    ?
    ?
    5、SQLLDR的命令:
    ?
    ??? 基本看最最上面的那個(gè)圖就OK了,隨便舉個(gè)例子:
    ??? D:\Test>sqlldr userid=wangxiaoqi/wangxiaoqi@dodo control=sqlldr.ctl
    ?
    ??? 需要注意的是:最好先轉(zhuǎn)到相應(yīng)目錄下面在執(zhí)行操作,另外可以對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)進(jìn)行操作!
    ?
    ??? 再具體一點(diǎn)的操作說(shuō)明可以上該網(wǎng)站:http://www.psoug.org/reference/sqlloader.html
    ?
    ?
    ?
    ????總結(jié):實(shí)在沒(méi)有太多的時(shí)間去仔細(xì)研究文檔,所以直接找了網(wǎng)上一篇記載得比較詳細(xì)的文章,粗略的看了一遍,修改了一下格式,文章錯(cuò)誤的地方有很多,沒(méi)有看明白的地方也有很多,不過(guò)總得來(lái)說(shuō),SQL*Loader的實(shí)際應(yīng)用還是相對(duì)比較簡(jiǎn)單的,下一篇打算找一些實(shí)例加深一下了解,具體的參數(shù)可參見(jiàn)Oracle的官方文檔 《Utilities》
    ?
    ??? 說(shuō)完!
    ?




    -The End-

    posted on 2008-12-25 21:57 decode360-3 閱讀(2026) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Oracle
    主站蜘蛛池模板: 男女猛烈xx00免费视频试看| 国产99视频免费精品是看6| 深夜a级毛片免费视频| 亚洲另类春色国产精品| 亚洲av永久无码精品漫画| 亚洲男人天堂2020| 无码国模国产在线观看免费| 成人免费毛片内射美女-百度| 久久精品国产免费| av午夜福利一片免费看久久| 老牛精品亚洲成av人片| 亚洲AV男人的天堂在线观看| 亚洲熟妇av一区二区三区下载| 亚洲狠狠婷婷综合久久久久| 亚洲偷自拍拍综合网| 免费一级毛片不卡不收费| 午夜免费不卡毛片完整版| 色婷婷7777免费视频在线观看| 精品熟女少妇a∨免费久久| 小日子的在线观看免费| 四虎国产精品免费永久在线| 国产精品免费久久久久影院| 免费人成网站永久| 免费国产a理论片| 青娱乐在线免费观看视频| 国产亚洲精品精品精品| 精品久久久久亚洲| 国产成人 亚洲欧洲| 男男gvh肉在线观看免费| 特级毛片aaaa级毛片免费| 春意影院午夜爽爽爽免费| 一级毛片免费播放试看60分钟| 全部一级一级毛片免费看| 日韩免费高清一级毛片| 羞羞视频网站免费入口| 日本一区二区三区在线视频观看免费| 日韩在线一区二区三区免费视频| 亚洲日韩在线观看免费视频| 视频免费在线观看| 99热这里只有精品6免费| 成人免费的性色视频|