欢迎光临
我们一直在努力

DB2 import详解

导入实用程序使用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 条记录已选择。


 


 


 


 


 


 


 


 


 


 

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。