DB2 import詳解

flywiththewind發表於2016-08-17

匯入實用程式使用SQL INSERT語句向表、型別表或檢視填充資料。如果接收匯入資料的表或檢視已包含資料,那麼輸入資料可替換現有資料,也可追加至現有資料。

 

IMPORT FROM filename OF { IXF | ASC | DEL | WSF }

[ LOBS FROM lob-path[{,lob-path}…] ]

[ XML FROM xml-path[{,xml-path}…] ]

[ MODIFIED BY filetype-mod … ]

[ METHOD{ L( col-start col-end[{,col-start col-end}…] )

            [NULL INDICATORS ( col-position[{,col-position}…] )] |

            N( col-name[{,col-name}…] ) |

            P( col-position[{,col-position}…] )

}

]

[ XMLPARSE { STRIP | PRESERVE } WHITESPACE ]

[ XMLVALIDATE USING

{XDS [ DEFAULT schema-sqlid ]

[ IGNORE (schema-sqlid[{,schema-sqlid}…])]

        [MAP

(  (schema-sqlid,schema-sqlid)

[{(schema-sqlid,schema-sqlid)}…]

)

] |

SCHEMA schema-sqlid |

SCHEMALOCATION HINTS

}

]

[ allow { NO | WRITE } ACCESS ]

[ COMMITCOUNT {n | AUTOMATIC} ]

[ {RESTARTCOUNT | SKIPCOUNT} n ] [ ROWCOUNT n ] [ WARNINGCOUNT n ]

[ NOTIMEOUT ]

[ MESSAGES message-file ]

{ { INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE }

   INTO {table-name[(insert-column,…)] | hierarchy-description} |

   CREATE INTO { table-name[(insert-column,…)] |

                    hierarchy-description

{ AS ROOT TABLE | UNDER sub-table-name }

                    [ IN tablespace-name [ INDEX IN tablespace-name ]

                                              [ LONG IN tablespace-name ]

 ]

}

}

 

filetype-mod:

COMPOUND=xINDEXSCHEMA=schemaFORCEININDEXIXFIMPLIEDDECIMAL

NOCHECKLENGTHSNOEOFCHARNULLINDCHAR=xRECLEN=xSTRIPTBLANKS

STRIPTNULLSNO_TYPE_IDNODOUBLEDELLOBSINFILEUSEDEFAULTS

CHARDELxCOLDELxDLDELxDECPLUSBLANKDECPTxDATESISO

DELPRIORITYCHARIDENTITYMISSINGIDENTITYIGNORE

GENERATEDMISSINGGENERATEDIGNOREDATEFORMAT=xTIMEFORMAT=x

TIMESTAMPFORMAT=xKEEPBLANKSCODEPAGE=xNOROWWARNINGS

NOCHARDELNODEFAULTSUSEGRAPHICCODEPAGEFORCECREATEXMLCHAR

XMLGRAPHICSECLABELCHAR SECLABELNAME

 

hierarchy-description:

{ ALL TABLES | ( sub-table-name [(insert-column,…)],… ) } [IN]

HIERARCHY { STARTING sub-table-name | ( sub-table-name,… ) }

說明:

1MODIFIED BY子句指定檔案型別修飾符以更改資料格式,告訴IMPORT實用程式如何處理資料以改進效能。

2、預設情況下,IMPORT實用程式直到匯入成功才執行落實,但某些ALLOW WRITE ACCESS匯入例外。雖然這會改變匯入速度,但考慮到並行性、可重新啟動性及活動日誌空間注意事項,最好指定落實在匯入期間進行。其中一種方法是將COMMITCOUNT引數設定為“automatic”,這會指示IMPORT在內部確定何時應執行落實。或者將COMMITCOUNT設定為特定數字,指示IMPORT在達到指定的已匯入記錄數時執行一次落實。

3、因為IMPORT實用程式是嵌入式SQL應用程式並且以內部方式執行SQL訪存,所以應用於SQL操作的最佳化會同時應用於IMPORT。可使用compound檔案型別修飾符以便一次插入指定數目的行,而不是按預設方式逐行插入。如果預計匯入期間會生成大量警告(並因此導致操作變慢),可指定norowwarnings檔案型別修飾符以抑制有關被拒絕行的警告。

4MESSAGES引數指定訊息檔案,在匯入期間,會編寫標準ASCII文字訊息檔案以包含與該操作相關的錯誤訊息、警告訊息和參考訊息。可以在匯入正在進行時訪問訊息檔案,以對匯入進度進行監視。如果匯入操作失敗,那麼可使用訊息檔案來確定重新啟動位置,原因是訊息檔案會指示成功匯入的最後一行。注:如果針對遠端資料庫的匯入操作生成的輸出訊息量超過60KB,那麼該實用程式會保留前30KB和後30KB

 

一、IMPORT的五種方式:

匯入可使用五種方式,它們用於確定匯入資料的方法。前三種方式為INSERTINSERT_UPDATEREPLACE,在目標表已存在的情況下使用。這三種方式都支援IXFWSFASCDEL資料格式。但是,只有INSERTINSERT_UPDATE可與暱稱配合使用。

INSERT

將輸入資料插入到目標表中而不更改現有資料

INSERT_UPDATE

使用輸入行的值更新具有匹配主鍵值的行,如果沒有匹配行,那麼會將已匯入行插入到表中。

REPLACE

刪除所有現有資料並插入已匯入資料,同時保留表和索引定義

另外兩種方式為REPLACE_CREATECREATE,在目標表不存在時使用。它們只能與PC/IXF格式的輸入檔案配合使用,此格式包含要建立的表的結構描述。如果物件表具有自身以外的任何從屬,那麼不能以這些方式執行匯入。建議不使用IMPORTCREATEREPLACE_CREATE方式,改用db2look實用程式

REPLACE_CREATE

刪除所有現有資料並插入已匯入資料,同時保留表和索引定義;如果目標表和索引不存在,那麼建立目標表和索引

CREATE

建立目標表和索引;可指定在其中建立新表的表空間名稱

 

二、IMPORT工作步驟:

1、鎖定表

根據是否允許對錶進行並行訪問,IMPORT會獲取對現有目標表的獨佔(X)或非獨佔(IX)鎖定。

2、查詢和檢索資料

IMPORT使用FROM子句來查詢輸入資料。如果命令指示XMLLOB資料存在,那麼IMPORT會查詢此資料。

3、插入資料

IMPORT會替換現有資料或將新的資料行新增至表。

4、檢查約束和激發觸發器

寫入資料後,IMPORT會確保每個已插入行符合針對目標表定義的約束。有關被拒絕行的資訊將寫至訊息檔案。IMPORT還會激發現有觸發器。

5、落實操作

IMPORT會儲存所作更改並釋放針對目標表的鎖定。還可指定在匯入期間定期落實。

 

三、IMPORT所需許可權

憑藉DATAACCESS許可權可以執行任何型別的匯入操作。以下是執行相應匯入型別的其他許可權:

INSERT

CONTROLINSERTSELECT

INSERT_UPDATE

CONTROLINSERTSELECTUPDATEDELETE

REPLACE

CONTROLINSERTSELECTDELETE

REPLACE_CREATE

目標表存在時:CONTROLINSERTSELECTDELETE

目標表不存在時:CREATETAB(針對資料庫)USE(針對表空間),以及模式不存在時:IMPLICIT_SCHEMA(針對資料庫)或模式存在時:CREATEIN(針對模式)

CREATE

CREATETAB(針對資料庫)USE(針對表空間),以及模式不存在時:IMPLICIT_SCHEMA(針對資料庫)或模式存在時:CREATEIN(針對模式)

 

示例:sample資料庫中的staff表匯入到test資料庫中。

D:\>db2 export to myfile.ixf of ixf messages msg.txt select * from staff             --匯出sample資料庫中staff表資料

匯出的行數:35

D:\>db2look -d sample -e -t staff -o staff.dml –-獲得DDL

-- USER : *******

-- db2look 實用程式將只考慮指定的表

-- 正在建立表的 DDL

-- 輸出被髮送到檔案: staff.dml

-- 正在自動繫結程式包 ...

-- 繫結成功

-- 正在自動繫結程式包 ...

-- 繫結成功

其中的DDL內容如下:

CREATE TABLE "******"."STAFF"  (

        "ID" SMALLINT NOT NULL ,

        "NAME" VARCHAR(9) ,

        "DEPT" SMALLINT ,

        "JOB" CHAR(5) ,

        "YEARS" SMALLINT ,

        "SALARY" DECIMAL(7,2) ,

        "COMM" DECIMAL(7,2) )  

       IN "USERSPACE1" ;

根據DDL,在test資料庫中建立staff表。

D:\>db2 import from myfile.ixf of ixf messages msg2.txt insert into staff           --test資料庫中的staff表匯入資料

 

讀取行數         = 35

跳過行數         = 0

插入行數         = 35

更新行數         = 0

拒絕行數         = 0

落實行數         = 35

 

D:\>db2 select * from staff    --驗證匯入結果

 

id     name      dept   job   years  salary    comm

------ --------- ------ ----- ------ --------- ---------

    10 Sanders       20 Mgr        7  98357.50         -

    20 Pernal        20 Sales      8  78171.25    612.45

    30 Marenghi      38 Mgr        5  77506.75         -

    40 O'Brien       38 Sales      6  78006.00    846.55

    50 Hanes         15 Mgr       10  80659.80         -

    60 Quigley       38 Sales      -  66808.30    650.25

    70 Rothman       15 Sales      7  76502.83   1152.00

    80 James         20 Clerk      -  43504.60    128.20

    90 Koonitz       42 Sales      6  38001.75   1386.70

   100 Plotz         42 Mgr        7  78352.80         -

   110 Ngan          15 Clerk      5  42508.20    206.60

   120 Naughton      38 Clerk      -  42954.75    180.00

   130 Yamaguchi     42 Clerk      6  40505.90     75.60

   140 Fraye         51 Mgr        6  91150.00         -

   150 Williams      51 Sales      6  79456.50    637.65

   160 Molinare      10 Mgr        7  82959.20         -

   170 Kermisch      15 Clerk      4  42258.50    110.10

   180 Abrahams      38 Clerk      3  37009.75    236.50

   190 Sneider       20 Clerk      8  34252.75    126.50

   200 Scoutten      42 Clerk      -  41508.60     84.20

   210 Lu            10 Mgr       10  90010.00         -

   220 Smith         51 Sales      7  87654.50    992.80

   230 Lundquist     51 Clerk      3  83369.80    189.65

   240 Daniels       10 Mgr        5  79260.25         -

   250 Wheeler       51 Clerk      6  74460.00    513.30

   260 Jones         10 Mgr       12  81234.00         -

   270 Lea           66 Mgr        9  88555.50         -

   280 Wilson        66 Sales      9  78674.50    811.50

   290 Quill         84 Mgr       10  89818.00         -

   300 Davis         84 Sales      5  65454.50    806.10

   310 Graham        66 Sales     13  71000.00    200.30

   320 Gonzales      66 Sales      4  76858.20    844.00

   330 Burke         66 Clerk      1  49988.00     55.50

   340 Edwards       84 Sales      7  67844.00   1285.00

   350 Gafney        84 Clerk      5  43030.50    188.00

 

  35 條記錄已選擇。

 

 

 

 

 

 

 

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224914/viewspace-2123606/,如需轉載,請註明出處,否則將追究法律責任。

相關文章