• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            Db2 文件導入導出常見命令總結

            Posted on 2009-02-27 19:19 Prayer 閱讀(296) 評論(0)  編輯 收藏 引用 所屬分類: DB2
            Db2 文件導入導出常見命令總結

            Db2 的數(shù)據(jù)遷移,最常用的就是導入導出功能,而導入導出的命令貌似簡單,實則內(nèi)含玄機,千變?nèi)f化,稍不留神,則錯誤百出,這兒就工作中常用到的命令,總結了一下,分享給大家!歡迎大家踴躍拍磚!J

            當然在這以前,我覺得有必要提及一點關于導入導出基礎的知識!
            DEL:界定的ASCII文件,行分隔符和列分隔符將數(shù)據(jù)分開。
            ASC:定長的ASCII文件,行按照行分割符分開,列定長。
            PC/IXF:只能用來在db2之間導數(shù)據(jù),根據(jù)類型數(shù)字值被打包成十進制或者二進制,字符被保存為ASCII,只保存變量已經(jīng)使用了的長度,文件中包括表的定義和表的數(shù)據(jù)。
            WSF:工作表方式導入導出,這種格式的文件類型用的比較少。
            Db2中對不同的數(shù)據(jù)導入導出方式,支持不同的文件類型,這里個人覺得很有必要注意的。
            文件類型        Import        export        load
            -------------------------------------------------------
            定界           支持           支持           支持
            非定界         支持           不支持         支持
            Ixf           支持           支持           支持
            Wsf工作表      支持           支持           不支持

            關于3種導入導出操作進行簡單的介紹:
            export:導出數(shù)據(jù),支持IXF,DEL或WSF
            import:導入數(shù)據(jù),可以向表中導入數(shù)據(jù),支持上面提到的4種文件類型。   
            load:導入數(shù)據(jù),功能和import基本相同。支持以上說的幾種文件類型。

            關于[/b]Export [/b]
            這個其實比較簡單,沒啥好說的,一般命令:export to filename of filetype select x from xx where ;就ok了,這里需要注意的是:
            1.    關于不同字符集的導出
            MODIFIED BY CODEPAGE=
            Exprot to filename.del for del MODIFIED BY   CODEPAGE=1386 select … from …where …;
            這里,在數(shù)據(jù)從數(shù)據(jù)庫倒出來的時候就會做一個數(shù)據(jù)庫代碼頁的轉換
            2.時間字段格式化的
            MODIFIED BY  TIMESTAMPFORMAT="yyyy-mm-dd hh:mm:ss tt"
            例:Exprot to filename.del for del MODIFIED BY  TIMESTAMPFORMAT="yyyy-mm-dd hh:mm:ss tt" select … from …where …;

            關于[/b]Import[/b]

            1.Import模式的介紹
            CREATE/INSERT/INSERT_UPDATE/REPLACE/REPLACE_CREATE
            CREATE :首先創(chuàng)建目標表和它的索引,然后將數(shù)據(jù)導入到新表中。該選項惟一支持的文件格式是 PC/IXF。還可以指定新表所在表空間的名稱
            INSERT :將導入的數(shù)據(jù)插入表中。目標表必須已經(jīng)存在。
            INSERT_UPDATE :將數(shù)據(jù)插入表中,或者更新表中具有匹配主鍵的行。目標表必須已經(jīng)存在,并且定義了一個主鍵。
            REPLACE :刪除所有已有的數(shù)據(jù),并將導入的數(shù)據(jù)插入到一個已有的目標表中。
            REPLACE_CREATE :如果目標表已經(jīng)存在,則導入實用程序刪除已有的數(shù)據(jù),并插入新的數(shù)據(jù),就像 REPLACE 選項那樣。如果目標表還沒有定義,那么首先創(chuàng)建這個表以及它的相關索引,然后再導入數(shù)據(jù)。正如您可能想像的那樣,輸入文件必須是 PC/IXF 格式的文件,因為那種格式包含對導出表的結構化描述。如果目標表是被一個外鍵引用的一個父表,那么就不能使用 REPLACE_CREATE。
            2.    批量提交
            COMMITCOUNT,保證insert的數(shù)據(jù)在COMMITCOUNT以后進行一次commit,這對于大數(shù)據(jù)量的導入文件來說是一個不錯的方法,
            例:Import from filename of del COMMITCOUNT 50000 insert into tabname;
            3.    批量插入
            MODIFIED BY COMPOUND把文件中的 COMPOUND 行記錄作為一組一起導入,這個操作可以和上邊的批量提交一起使用,比較理想。
            例:Import from filename of del MODIFIED BY COMPOUND =50 insert into tabname;
            4.    導入記錄限制
            ROWCOUNT:只導入rowcount 條數(shù)據(jù),有時候,業(yè)務邏輯需要只導入部分數(shù)據(jù),那么ROWCOUNT是一個不錯的選擇,只是在我的測試中ROWCOUNT一直沒有起過作用,呵呵,誰熟悉這里,幫我完善下。
            例:Import from filename of del ROWCOUNT 10000 insert into tabname;
            5.    導入起點
            RESTARTCOUNT:從導入文件的第RESTARTCOUNT條記錄開始導入
            例:Import from filename of del RESTARTCOUNT 55 ROWCOUNT 10000 insert into tabname;--從55條開始,導入10000條數(shù)據(jù)
            6.    有警告數(shù)據(jù)的條數(shù)限制
            WARNINGCOUNT:當導入的數(shù)據(jù)中,有警告或錯誤(例如類型不匹配,列不對應等造成的)并且條數(shù)超過WARNINGCOUNT是就會停止import。
            例:Import from filename of del WARNINGCOUNT 10 insert into tabname;
            7.    禁止發(fā)出行警告
            MODIFIED BY NOROWWARNINGS
            例:Import from filename of del MODIFIED BY NOROWWARNINGS WARNINGCOUNT 10 insert into tabname;
            8.    LOB 文件
            LOBS FROM :指出LOB的路徑
            例:Import from filename of del LOBS FROM ‘/home’ MODIFIED BY NOROWWARNINGS WARNINGCOUNT 10 insert into tabname;
            9.    對于自增序列(GENERATED ALWAYS)
            建議不要對自增序列的表進行import操作,因為import對于自增序列,只有MODIFIED BY  IDENTITYIGNORE和MODIFIED BY IDENTITYMISSING的2中操作,這2中操作都會改變自增序列的原值,這樣如果導出表和表之間有基于自增序列的關聯(lián)關系的話,就失去了數(shù)據(jù)本身的意義,所以建議盡量少用基于import的自增表的操作,那該怎么做?可以用load老代替import,我們下來在load的操作中會講到!

            關于[/b]Load[/b]

            1. 字符串間隔,列間隔,小數(shù)點表示
            CHARDEL/COLDEL/DECPT
            例:LOAD CLIENT FROM 'F:\s1.del' OF DEL MODIFIED BY CHARDEL(COLDEL=   DECPT?  INSERT INTO "DB2ADMIN"."ZXTABLES"

            2.數(shù)據(jù)庫記錄中存在換行符,導致數(shù)據(jù)無法裝入的情況
            MODIFIED BY DELPRIORITYCHAR
            Db2默認load優(yōu)先級策略為,record delimiter, character delimiter, column delimiter,這樣record delimiter得優(yōu)先級最高,所以原始文件如果有換行的話load就認為是新的record,如果用戶在某些情況下行里面包含了換行符(比如論壇里面的一條帖子,不可能把換行符刪掉的),就必須用delprioritychar改變默認的優(yōu)先級別,確保""之間的數(shù)據(jù)不管有沒有換行符都被認為是同一條記錄
            例:LOAD CLIENT  FROM 'F:\s1.del' OF DEL MODIFIED BY DELPRIORITYCHAR  INSERT INTO DB2ADMIN.ZXTABLES

            3.load后表空間暫掛的處理
            Copy YES/ NONRECOVERABLE
            對于DMS表空間,load默認為copy NO 模式,此模式下,load完成后,表空間會處于暫掛狀態(tài),這時候只能查表中的數(shù)據(jù),需要對表空間進行一次備份,才可以對表進行update、insert等操作,那么我們可以使用如上2個命令,對于Copy YES,load完成以后會自動進行一次備份操作;NONRECOVERABLE 指出load不可恢復,此命令符不會產(chǎn)生表空間暫掛,也不會自動進行表空間備份,但是他有一個缺點就是,不能恢復,當數(shù)據(jù)庫進行回滾的時候,不能還原,危險等級還是比較高一點,不過個人覺得也NONRECOVERABLE比較實用。

            例:LOAD CLIENT FROM 'F:\s1.del' OF DEL INSERT INTO DB2ADMIN.ZXTABLES NONRECOVERABLE
            LOAD CLIENT FROM 'F:\s1.del' OF DEL INSERT INTO DB2ADMIN.ZXTABLES COPY YES
            4. load IXF類型文件到多分區(qū)數(shù)據(jù)庫

            partitioned db configmode load_only_verify_part part_file_location

            當數(shù)據(jù)在2個不同數(shù)量節(jié)點的數(shù)據(jù)庫之間移動,如果還想使用load來進行IXF的數(shù)據(jù)裝載就比較棘手了,當時查遍IBM的官方文檔均無所獲,正郁郁不安時,狼出現(xiàn)了,給支了一招,現(xiàn)分享給大家。
            首先,把ixf文件復制和分區(qū)數(shù)量相同的文件,并后綴.000(分區(qū)號),
            比如,2個分區(qū),那么我需要把原來的a.ixf,拷貝2個,并命名為a.ixf.000以及a.ixf.001
            然后,load from staff.ixf of ixf replace into t1 partitioned db configmode load_only_verify_part part_file_location xxxx(part_file_location為a.ixf.000所在的目錄),當然如果在unix下的話,可以通過ln –s 來做一個連接也行。

            5. 對于自增序列(GENERATED ALWAYS)
            MODIFIED BY IDENTITYOVERRIDE:此參數(shù)可以理解為,采用文件load文件中的自增值做為表自增序列的值,這樣就能保證對于自增序列有業(yè)務意義,或者關聯(lián)邏輯(主外鍵關聯(lián))的情況下保證數(shù)據(jù)的一致,個人對此命令屢試不爽

            例:  LOAD CLIENT FROM 'F:\s1.del' OF DEL MODIFIED BY IDENTITYOVERRIDE INSERT INTO DB2ADMIN.ztables;

            6. 對于自增序列(GENERATED by default)
            GENERATED by default可以直接通過一般的導入方式加載數(shù)據(jù),不過有時候會有一點點小問題,自增序列沒有進行分配,也就是說,原來表有50條記錄,自增序列的下一次分配值為50,當你已經(jīng)導入了1000條記錄進去了,然后發(fā)現(xiàn)自增序列的下一次分配值還是為50,這種事不經(jīng)常發(fā)生,但是偶爾會發(fā)生一次,比較郁悶的是,當表繼續(xù)插入數(shù)據(jù)的時候,下一次分配就會發(fā)生沖突,尤其是如果自增建為主鍵的時候,會違反唯一約束。
            解決辦法:首先找到這個序列分配的最大值,select max(id) from tablea;
            然后用下邊這個命令,alter table tablea alter column restart  with max(id)+1

            7.
            ROWCOUNT/WARNINGCOUNT
              這個同IMPORT

            8.terminate,restart
            如果load的過程中出了點故障,比如連接被force掉了等,這時連接查詢表數(shù)據(jù)會報錯SQL0668N,原因碼3,這時可以通過帶有terminate的load命令來進行處理!
            LOAD CLIENT FROM 'F:\s1.del' OF DEL terminate[/b] INTO DB2ADMIN.ztables;

            9. set integrity 命令
            如果表上有約束,那么給表load數(shù)據(jù)以后,一般連接表的時候都會報錯,SQL0668N,原因碼1,這說明該表處于“設置完整性暫掛無訪問”狀態(tài),那么需要如下命令來操作。

            Set integrity for schema.tablename immediate checked;

            10.提高導入導出速度的數(shù)據(jù)庫參數(shù)
            CONFIGURATION:應用程序堆大小,該參數(shù)指示可由Backup,restore,load及裝入恢復應用程序同事使用的最大內(nèi)存量,看帖子上有介紹,這個值可以設置為10000*cpu數(shù)量。
            DB2 UPDATE DATABASE CONFIGURATION USING UTIL_HEAP_SZ 113486


            呵呵,暫時就寫這么多了,歡迎大家繼續(xù)補充。

            由于時間比較緊張,在語言組織上有點凌亂,請大家見諒!
            久久国产精品无码一区二区三区 | 午夜精品久久影院蜜桃| 情人伊人久久综合亚洲| 日韩欧美亚洲国产精品字幕久久久 | 理论片午午伦夜理片久久 | 日日噜噜夜夜狠狠久久丁香五月| 久久久久久国产精品无码超碰| 久久免费视频网站| 一级做a爰片久久毛片毛片| 久久精品这里热有精品| 香蕉久久久久久狠狠色| 狠狠色丁香久久综合婷婷| 久久久久亚洲AV片无码下载蜜桃| 精品免费tv久久久久久久| 婷婷久久香蕉五月综合加勒比| 99久久精品费精品国产| 蜜臀久久99精品久久久久久小说| 精品水蜜桃久久久久久久| 精品国产VA久久久久久久冰| 久久久久久久久久久精品尤物 | 亚洲国产精品成人AV无码久久综合影院 | 日韩久久久久久中文人妻| 精品熟女少妇aⅴ免费久久| 99久久精品日本一区二区免费| 久久亚洲精品无码aⅴ大香| 久久精品无码一区二区三区日韩 | 精品久久久久一区二区三区| 久久久久成人精品无码中文字幕 | 97久久精品午夜一区二区| 99精品国产99久久久久久97 | 亚洲天堂久久精品| 国产精品久久一区二区三区| 嫩草伊人久久精品少妇AV| 久久SE精品一区二区| 亚洲国产综合久久天堂 | 色欲综合久久躁天天躁| 久久久久久国产精品免费免费| 久久99精品国产99久久6| 99久久伊人精品综合观看| 国产99久久久久久免费看| 亚洲乱亚洲乱淫久久|