例五:把导出信息保存在消息文件中。

export to d:\awards.ixf of ixf messages d:\msgs.txt select * from staff where dept = 20

这个例子把staff表中dept=20的数据导出到d:\awards.ixf文件中,所有的导出信息都保存在d:\msgs.txt文件中(无论是成功、警告还是失败信息),这样,管理员可以通过观察信息文件找到问题所在。

例六:给导出数据列重命名。

export to d:\awards.ixf of ixf method n(c1,c2,c3,c4,c5,c6,c7) messages d:\msgs.txt select * from staff where dept=20

在默认情况下,导出的每一列数据以表中对应的字段名自动命名,我们可以通过method n子句给每一列重新命名,需要注意的是,这个子句只在ixf和wsf格式文件中有效,在文本文件中不能使用。

数据的导入

例七:把C盘根目录下的org.txt文件中的数据导入到org表中

import from c:org.txt of del insert into org

导入命令和导出命令的格式基本上处于对应的关系,import对应export,from对应to,文件名和文件格式代表的含义相同,但是导入命令支持ASC格式的文件,而导出命令不支持。另外,在导出命令的最后是一个SQL语句,用于选择要导出的数据,而导入命令最后不是SQL语句,而是插入数据的方式以及目标表名称。

例八:从ASC格式文件中导入数据

import from c:org2.txt of asc method l(1 5,6 19,20 25,26 37,38 50) insert into org

其中 method l 子句用于指定文本文件中每一个字段的起始位置和终止位置,每个起始位置和终止位置间用空格分开,字段之间用逗号分开。 除了l方法之外,还有n方法和p方法,下面会叙述。 www.3s8.cn

例九:利用n方法导入数据,并且创建新表。

首先导出一个用例文件:

export to d:org.ixf of ixf method n(a,b,c,d,e) select * from org

这样org.ixf文件中有五列数据,对应的列名分别为a、b、c、d、e

然后在从该文件中导入数据到一个新表中

import from d:org.ixf of ixf method n(d,e,b) replace_create into orgtest

该命令从文件中选取三列导入到表中,顺序可以不按照文件中原有的列的顺序。replace_create方式的叙述见下。

插入方式有:

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

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

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

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

例十:利用p方法导入数据

import from d:org.ixf of ixf method p(4,5,2) replace into orgtest

该例子执行的效果和例九类似,只是把n方法换成了p方法,p方法后面的列表中指明列的序号即可,不需要指明列名。另外,此例中使用了replace方式插入数据,这会把表中现有的数据都删除,然后向空表中插入数据。

例十一:关于空值的导入

对于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=# 子句表示在文件中第五个字段如果遇到 # 号,则表示为空值。

装入(Load)

装入命令格式与导入类似,命令关键字是Load,但是后面的参数比导入命令多的多,详细用法可以自行参考DB2文档。

装入与导入类似,都是将输入文件中的数据移入到目标表中,二者的不同点将在实例中逐步解释。

在装入之前,目标表必须已经存在。装入的性能比导入高,原因在后面结合实例详细解释。装入操作不记录到日志中,所以不能使用日志文件进行前滚操作。

装入分为4个阶段:

1. 装入阶段

在这个阶段发生两件事:数据存储在表中,收集索引键并排序。在装入时,DBA可以指定多长时间生成一致点。它是装入工具的检查点。如果装入在执行期间被打断,它可以从最后一个一致点处开始继续重新执行。

2. 构建阶段

在构建阶段,基于在装入阶段收集的索引键信息创建索引。如果在构建阶段发生错误,装入工具就重启,它将从构建阶段开始处重新开始构建。

3. 在删除阶段,所有违反唯一或主键约束的行都被删除并拷贝到一个异常表(如果在语句中指定相应选项)中。当输入行被拒绝,消息文件中就生成消息。