作者:熔  岩
日期:2007-04-10
MSN:[email]leizhimin@126.com[/email]
声明:原创作品,未经授权,谢绝转载!
 
DB2 V9.1数据转移方案二则
 
概述:
数据转移指的是将一个表中的数据存储在别的地方。可以是临时表、中间表、或者文件。
数据转移是在实际开发中应用广泛,是不同数据库之间数据移植的基础工作。
数据转移是发生在部分表或者中间查询结果上,是一种轻量级的数据临时存储,与数据库备份有着很大不同。
 
概要:
本文介绍DB2数据转移的两种关键技术:转移到文件,转移到表(中间表、临时表)。
 
环境:
windows xp professional
DB2 9.1
 
方法:
 
一、将查询结果输出到文件
步骤:
1、从开始菜单打开DB2命令行处理器(或者进入db2安装目录下的bin目录),然后执行quit命令,这样就进入DOS窗口模式了。
 
2、在DOS窗口下链接数据库(或者在第一步中先连接数据库,然后再quite,就不需要再链接数据库了),在DOS窗口模式下连接后,就可以用重定向输出>,或者增量重定向输出>>来输出查询结果了
 
3. 在DOS窗口模式下执行sql查询并重定向输出
 
然后我们去C:\下面查看,发现多了一个dm_hyml.txt文件,打开后,结果正是查询结果的输出。
 
说明:
        DB2命令行处理器和DOS命令行窗口和相似,但是两者有着本质的不同的,DB2命令行处理器是在DB2环境下的。DOS命令行实在OS环境下的。所有,在DOS窗口下,执行DB2的命令前面都要加上“db2”关键字。
        重定向输入的仅仅是文本,可以通过SQL查询的拼装字符串来输出可执行的SQL insert等语句。
 
二、将查询结果直接插入到一个表
 
步骤:
1、定义一个表,用来保存查询的数据
CREATE TABLE tt
 (   XH INTEGER not null generated by default as identity,
     HY_DM  VARCHAR(6)      NOT NULL,
     HY_MC  VARCHAR(200)    NOT NULL
  );
 
2、执行插入查询结果的sql语句
 
insert into tt(hy_dm, hy_mc)
  (select a.hy_dm, a.hy_mc
     from dm_hy a
    where a.hy_dm in ('01', '065210', '065120', '010100')
    order by a.hy_dm)
 
3、检查目标表,看是否写入数据:
 
查看结果写入成功。
 
注意:插入数据的顺序与查询结果显示的数据是一致的,下面是对这个结论的验证。
执行SQL查询,结果如下:
 
执行插入查询结果的sql后,查看插入的表,结果如下:
delete from tt;
insert into tt(hy_dm, hy_mc)
  (select a.hy_dm, a.hy_mc
     from dm_hy a
    where a.hy_dm in ('01', '065210', '065120', '010100')
    order by a.hy_mc);
 
 
查看目标表的结果:
 
得出结论:插入顺序与查询sql输入记录顺序一致,从中还可以发现一个结论:如果查询的中间表某字段为自增,则自增字段的开始数字会接着上次记录数进行递增,如果要每次都从1开始递增,则需要重建中间表。