概述:
数据转移指的是将一个表中的数据存储在别的地方。可以是临时表、中间表、或者文件。
数据转移是在实际开发中应用广泛,是不同数据库之间数据移植的基础工作。
数据转移是发生在部分表或者中间查询结果上,是一种轻量级的数据临时存储,与数据库备份有着很大不同。
概要:
本文介绍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
);
( 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)
(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);
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开始递增,则需要重建中间表。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/23261,如需转载请自行联系原作者