DB2import详解

导入实用程序使用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=x、INDEXSCHEMA=schema、FORCEIN、INDEXIXF、IMPLIEDDECIMAL、

NOCHECKLENGTHS、NOEOFCHAR、NULLINDCHAR=x、RECLEN=x、STRIPTBLANKS、

STRIPTNULLS、NO_TYPE_ID、NODOUBLEDEL、LOBSINFILE、USEDEFAULTS、

CHARDELx、COLDELx、DLDELx、DECPLUSBLANK、DECPTx、DATESISO、

DELPRIORITYCHAR、IDENTITYMISSING、IDENTITYIGNORE、

GENERATEDMISSING、GENERATEDIGNORE、DATEFORMAT=x、TIMEFORMAT=x、

TIMESTAMPFORMAT=x、KEEPBLANKS、CODEPAGE=x、NOROWWARNINGS、

NOCHARDEL、NODEFAULTS、USEGRAPHICCODEPAGE、FORCECREATE、XMLCHAR、

XMLGRAPHIC、SECLABELCHAR和 SECLABELNAME

 

hierarchy-description:

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

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

说明:

1、MODIFIED BY子句指定文件类型修饰符以更改数据格式,告诉IMPORT实用程序如何处理数据以改进性能。

2、缺省情况下,IMPORT实用程序直到导入成功才执行落实,但某些ALLOW WRITE ACCESS导入例外。虽然这会改变导入速度,但考虑到并行性、可重新启动性及活动日志空间注意事项,最好指定落实在导入期间进行。其中一种方法是将COMMITCOUNT参数设置为“automatic”,这会指示IMPORT在内部确定何时应执行落实。或者将COMMITCOUNT设置为特定数字,指示IMPORT在达到指定的已导入记录数时执行一次落实。

3、因为IMPORT实用程序是嵌入式SQL应用程序并且以内部方式执行SQL访存,所以应用于SQL操作的优化会同时应用于IMPORT。可使用compound文件类型修饰符以便一次插入指定数目的行,而不是按缺省方式逐行插入。如果预计导入期间会生成大量警告(并因此导致操作变慢),可指定norowwarnings文件类型修饰符以抑制有关被拒绝行的警告。

4、MESSAGES参数指定消息文件,在导入期间,会编写标准ASCII文本消息文件以包含与该操作相关的错误消息、警告消息和参考消息。可以在导入正在进行时访问消息文件,以对导入进度进行监视。如果导入操作失败,那么可使用消息文件来确定重新启动位置,原因是消息文件会指示成功导入的最后一行。注:如果针对远程数据库的导入操作生成的输出消息量超过60KB,那么该实用程序会保留前30KB和后30KB。

 

一、IMPORT的五种方式:

导入可使用五种方式,它们用于确定导入数据的方法。前三种方式为INSERT、INSERT_UPDATE和REPLACE,在目标表已存在的情况下使用。这三种方式都支持IXF、WSF、ASC和DEL数据格式。但是,只有INSERT和INSERT_UPDATE可与昵称配合使用。

INSERT

将输入数据插入到目标表中而不更改现有数据

INSERT_UPDATE

使用输入行的值更新具有匹配主键值的行,如果没有匹配行,那么会将已导入行插入到表中。

REPLACE

删除所有现有数据并插入已导入数据,同时保留表和索引定义

另外两种方式为REPLACE_CREATE和CREATE,在目标表不存在时使用。它们只能与PC/IXF格式的输入文件配合使用,此格式包含要创建的表的结构描述。如果对象表具有自身以外的任何从属,那么不能以这些方式执行导入。建议不使用IMPORT的CREATE和REPLACE_CREATE方式,改用db2look实用程序。

REPLACE_CREATE

删除所有现有数据并插入已导入数据,同时保留表和索引定义;如果目标表和索引不存在,那么创建目标表和索引

CREATE

创建目标表和索引;可指定在其中创建新表的表空间名称

 

二、IMPORT工作步骤:

1、锁定表

根据是否允许对表进行并行访问,IMPORT会获取对现有目标表的独占(X)或非独占(IX)锁定。

2、查找和检索数据

IMPORT使用FROM子句来查找输入数据。如果命令指示XML或LOB数据存在,那么IMPORT会查找此数据。

3、插入数据

IMPORT会替换现有数据或将新的数据行添加至表。

4、检查约束和激发触发器

写入数据后,IMPORT会确保每个已插入行符合针对目标表定义的约束。有关被拒绝行的信息将写至消息文件。IMPORT还会激发现有触发器。

5、落实操作

IMPORT会保存所作更改并释放针对目标表的锁定。还可指定在导入期间定期落实。

 

三、IMPORT所需权限

凭借DATAACCESS权限可以执行任何类型的导入操作。以下是执行相应导入类型的其他权限:

INSERT

CONTROL或INSERT和SELECT

INSERT_UPDATE

CONTROL或INSERT、SELECT、UPDATE、DELETE

REPLACE

CONTROL或INSERT、SELECT、DELETE

REPLACE_CREATE

目标表存在时:CONTROL或INSERT、SELECT、DELETE

目标表不存在时: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条记录已选择。

 

 

 

 

 

 

 

 

 

 


当前文章:DB2import详解
本文网址:http://pwwzsj.com/article/gidiio.html