Posted on 2009-03-25 13:31
Prayer 阅读(575)
评论(0) 编辑 收藏 引用 所属分类:
DB2
DB2:数据的传输
Db2提供了如下几个工具用来传输数据:
Export:Export可以将一个select语句所选择的数据输出到指定格式的文件;
Import:与Export相反,Import工具从文件读取数据,并利用Insert语句将数据插入到表格之中。值得注意的一点是,执行Import指令的过程中,平常单独支持Insert语句所触发的限制检查和触发器同样也会工作;
Load:与Import类似,Load工具同样用来加载数据,只是它不使用Insert语句,它直接加载数据页,所以它的数度更快。在Load过程中,表格上定义的各种限制和触发器将暂时实效,Load数据之后,要使用SET INTEGRITY指令检查刚刚加载的数据;
db2move:此工具用来批量移动多个表格;
Export,Import和Load可以使用一下4种格式的数据文件:
DEL或者ASC:这两种格式均为文本格式,只包含数据,不包含表结构的定义;
IXF:这种格式的文件同时包含数据和表结构的定义,索引和主键,但是不包含外键,限制和触发器等;
WSF:这种格式的文件用来与Lotus 1-2-3等电子表格交换数据;
Export:
执行Export需要SYSADM,SYSCTRL,或者SYSMAINT的权利,或者是对输出的表格或者视图有CONTROL的权限;
使用Export的例子如下:
EXPORT TO staff.del OF DEL MESSAGE export.msg
SELECT * FROM Vicky.staff
EXPORT TO Vicky.ixf OF IXF
METHOD N ( name, dept, salary ) MESSAGE export.msg
SELECT name, dept, salary
FROM Vicky.staff
WHERE salary >= 20000
Import:
执行Import指令可以使用下列几种模式:
INSERT:目标表格必须已经存在,现有表格的数据页不会受到影响;
INSERT_UPDATE:目标表格必须存在,而且定义有主键。如果新输入的数据与现有数据的主键相等,则更新,否则插入;
REPLACE:目标表格必须存在,所有现存的数据将被删除;
CREATE(仅适于IXF文件):目标表格不存在,Import指令会利用IXF文件种的信息建立表格与索引,并插入数据;
REPLACE_CREATE(仅适于IXF文件):如果目标表格存在,现存数据被删除,被新数据所取代;如果目标表格不存在,则同CREATE模式;
Import指令根据不同的数据文件格式,需要使用METHOD选项指定数据列字段以及起位置;
METHOD L:对于ASC格式的文件,必须指定每个字段的起始与结束位置;例如:
IMPORT FROM myfile.asc OF ASC METHOD L ( 1 10, 12 15 )
INSERT INTO vicky.staff
METHOD N:对于IXF文件,指定字段的名称;例如:
IMPORT FROM myfile.ixf OF IXF METHOD N ( c1, c2, c3 )
INSERT INTO vicky.staff ( c1, c2, c3 )
METHOD P:对于DEL和IXF文件,指定字段的号码;例如:
IMPORT FROM datafile1.del OF DEL METHOD P ( 1, 3, 4)
REPLACE INTO vicky.staff ( c1, c3, c4)
Import使用INSERT语句插入数据,该操作受事务日志所保护,可以在Import语句中使用commitcount选项指定每个事务的插入记录数,如:
IMPORT FROM order_item.ixf OF IXF COMMITCOUNT 1000
MESSAGE import.msg INSERT INTO vicky.order_item
还可以使用RESTARTCOUNT指定从第几笔数据开始导入,如从10001笔开始导入:
IMPORT FROM order_item.ixf of IXF RESTARTCOUNT 10000
MESSAGE import.msg INSERT INTO vicky.order_item
Load:
Load工具不单可以从文件加载数据,还可以从Pipe中或者是磁带机等外设中加载数据;使用Load时要注意如下几点:
Load数据之前,表格必须存在;
Load数据前先建立索引;
Load过程不受事务日志保护,可以指定COPY YES选项使Load结束自动进行备份;
Load数据后需要用SET INTEGRITY语句将不合乎限制的数据放入例外表格;
Load过程中触发器不起作用;
Load只有在REPLACE模式下才可以自动收集统计信息,此时STATISTICS YES为默认选项;
Load使用sqllib/tmp为默认临时空间,可以使用TEMPFILE PATH指定其他目录;
在SMP环境中Load可以指定使用多个CPU;
加载过程中可以使用QUERY指令查看加载进度,如:
LOAD QUERY TABLE vicky.staff
使用Load的例子如下:
LOAD FROM tools.ixf OF IXF MESSAGE load.msg
INSERT INTO vicky.tools
FOR EXCEPTION vicky.badtools
LOAD FROM tools.ixf OF IXF MESSAGE load.msg
REPLACE INTO vicky.tools
STATISTICS YES WITH DISTRIBUTION AND DETAILED INDEXES ALL
COPY YES TO /opt/backup
Load建立索引时可以指定如下几种模式(INDEXING MODE):
REBUILD:对表格中的所有数据重建索引结构;
INCREMENTAL:将加载数据的索引列加入原有的索引结构中;
AUTOSELECT:由Load自动选择采用REBUILD或者INCREMENTAL;
DEFERRED:延迟建立索引结构(至于什么时候建立索引取决与INDEXREC参数;
SET INTEGRITY的例子:
SET INTIGRITY FOR vicky.tools, vicky.staff
IMMEDIATE CHECKED
FOR EXCEPTION IN vicky.tools USE vicky.badtools,
IN vicky.staff USE vicky.badstaff
SET INTEGRITYCONSTRAINTS FOR vicky.staff ALL IMMEDIATE UNCHECKED