IMPORT命令详解

参考链接

https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0008304.html

语法

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 ]]
}
}
参数详解
filename 
不做解释,参考export。
{IXF|ASC|DEL|WSF}
不做解释,参考export。
[ LOBS FROM lob-path[{,lob-path}…]]
不做解释,参考export。
[ XML FROM xml-path[{,xml-path}…]]
不做解释,参考export。
[ MODIFIED BY filetype-mod…](待完善)
COMPOUND=x
每x条记录而不是每1条记录插入后等待返回的SQL执行结果,通俗来讲就是每x条记录插入一次。
INDEXSCHEMA=schema
使用索引创建期间指定的用于索引的模式。
FORCEIN
INDEXIXF
IMPLIEDDECIMAL
NOCHECKLENGTHS
NOEOFCHAR
NULLINDCHAR=x
对于ixf格式的文件,导入空值非常方便,因为里面已经记录了空值的信息。但是,对于ASC格式文件就有一定的难度了,因为DB2会直接插入空格,而不是空值。为此,DB2提供了一个子句进行控制:NULL INDICATORS
import from  c:\org2.txt of asc MODIFIED BY nullindchar=# method l(1 5,6 19,20 25,26 37,38 50) NULL INDICATORS(0,0,0,0,38 ) replace into org
在这个例子中,NULL INDICATORS子句后面是一个列表,表示前面四个字段都不会存在空值,而第五个字段从38列开始,可能存在空值,而 MODIFIED BY nullindchar=# 子句表示在文件中第五个字段如果遇到 # 号,则表示为空值。
RECLEN=x
STRIPTBLANKS
将数据装载到可变长度字段时,截去结尾空白。
STRIPTNULLS
NO_TYPE_ID
NODOUBLEDEL
LOBSINFILE
参考export命令。
USEDEFAULTS
CHARDELx
参考export命令。
COLDELx
参考export命令。
DLDELx
DECPLUSBLANK
参考export命令。
DECPTx
参考export命令。
DATESISO
参考export命令。
DELPRIORITYCHAR
IDENTITYMISSING
IDENTITYIGNORE
GENERATEDMISSING
GENERATEDIGNORE
DATEFORMAT=x
参考export命令。
TIMEFORMAT=x
参考export命令。
TIMESTAMPFORMAT=x
参考export命令。
KEEPBLANKS
保留char,varchar,long varchar,clob类型的每个字段的首尾空格。如不设置则会删掉定界符之间的首尾空格,如果被导入字段为空白,则会在对应列中插入NULL。
CODEPAGE=x
参考export。
NOROWWARNINGS
使用NOROWWARNINGS文件类型修饰符可以禁止产生警告信息,当装入过程可能出现大量警告信息,而用户对此又不感兴趣的时候,可以使用该选项,这样可以大大提高装入的效率。
NOCHARDEL
NODEFAULTS
USEGRAPHICCODEPAGE
FORCECREATE
XMLCHAR
XMLGRAPHIC
SECLABELCHAR
SECLABELNAME
[ 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}…])}]

在导入的时候可以选择只导入部分字段的数据,这需要使用METHOD选项。METHOD选项有三种:METHOD L、METHOD N、METHOD P。下表是三种方式的区别:

名称

适用的文件格式

参数

METHOD L

ASC文件

起始位置和终止位置

METHOD N

IXF文件

字段名称

METHOD P

DEL和IXF文件

字段位置,从1开始

IMPORT from /data/test.asc of ASC METHOD L(1 5,10 12,20 30) messages msg.out insert into mytab1(c1,c2,c4)

 load from /data/test.ixf of ixf method N(C2,C1,C3) insert into mytab1(c1,c2,c4)

[ ALLOW{NO|WRITE}ACCESS]

排它锁。默认情况下,在插入任何行之前,导入实用程序将获得目标表上的一个排它锁。一旦导入完成,这个排它锁将被释放。这是

[ COMMITCOUNT{n|AUTOMATIC}]

COMMITCOUNT n:在导入n条记录后强制执行提交。

COMMITCOUNT AUTOMATIC :允许DB2在内部决定何时需要执行提交。该DB2将考虑发出一个提交命令,以避免日志写满或者避免锁升级。也就是说由DB2动态决定多少条记录提交一次。

[ {RESTARTCOUNT|SKIPCOUNT}n]

RESTARTCOUNT n:将从第n条记录开始。

SKIPCOUNT n:其行为与 RESTARTCOUNT 是相同的。

[ ROWCOUNT n]

指定将要导入的物理记录的条数,例如:

IMPORT FROM myfile.ixf OF IXF COMMITCOUNT 500 RESTARTCOUNT 30000 ROWCOUNT 100000 MESSAGES msg.out INSERT INTO newtable

其行为就是:导入实用程序将忽略前

[ WARNINGCOUNT n]

指定装入操作过程中允许的警告次数,超过n次数后装入操作失败。如果不设置或者设置为0那么无论有多少条记录告警,装入操作都将继续。

[ NOTIMEOUT]

指定导入实用程序在等待锁定时不会超时。该选项取代locktimeout数据库配置参数。

[ MESSAGES message-file]

参考export命令。

{{INSERT|INSERT_UPDATE|REPLACE|REPLACE_CREATE}

INSERT 方式——在表中现有数据的基础之上追加新的数据。

INSERT_UPDATE 方式——这种方式只能用于有主键的表,如果插入的数据与原有数据主键不冲突,则直接插入,如果主键冲突,则用新的数据代替原有数据。

REPLACE 方式——先把表中现有的数据都删除,然后向空表中插入数据。

REPLACE_CREATE 方式——表示如果表存在,则先把表中的数据都删除,然后向空表中插入数据;如果表不存在,则先根据文件中的字段创建表,然后再向表中插入数据。这种方式只能把IXF格式的文件中的数据插入到表中。