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]
排它锁。默认情况下,在插入任何行之前,导入实用程序将获得目标表上的一个排它锁。一旦导入完成,这个排它锁将被释放。这是 ALLOW NO ACCESS 选项的行为。为了允许并发应用程序访问表数据,可以使用 ALLOW WRITE ACCESS 选项。注意,该选项与 REPLACE、CREATE 或 REPLACE_CREATE 导入选项不兼容。
[ 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
其行为就是:导入实用程序将忽略前 30,000 条记录,并且将剩下的 100,000 条记录导入到表中。
[ WARNINGCOUNT n]
指定装入操作过程中允许的警告次数,超过n次数后装入操作失败。如果不设置或者设置为0那么无论有多少条记录告警,装入操作都将继续。
[ NOTIMEOUT]
指定导入实用程序在等待锁定时不会超时。该选项取代locktimeout数据库配置参数。
[ MESSAGES message-file]
参考export命令。
{{INSERT|INSERT_UPDATE|REPLACE|REPLACE_CREATE}
INSERT 方式——在表中现有数据的基础之上追加新的数据。
INSERT_UPDATE 方式——这种方式只能用于有主键的表,如果插入的数据与原有数据主键不冲突,则直接插入,如果主键冲突,则用新的数据代替原有数据。
REPLACE 方式——先把表中现有的数据都删除,然后向空表中插入数据。
REPLACE_CREATE 方式——表示如果表存在,则先把表中的数据都删除,然后向空表中插入数据;如果表不存在,则先根据文件中的字段创建表,然后再向表中插入数据。这种方式只能把IXF格式的文件中的数据插入到表中。