数据库迁移,两个数据库间导数据, 解决方案_鳴铁 。

http://hi.baidu.com/duoai000/blog/item/de9880d64643a72507088b3e.html

 

 

操作原因:程序更新,数据库也需要更新.在程序开发的时候使用的数据库结构是新数据库结构

但是老数据库中有历史数据,需要整合在新数据库中

操作具体步骤:

首先,将老数据库,和新数据库分别导出。比如叫做 old.dmp 和 new.dmp

然后 在一台新机器上 新建一个数据库,并新建两个用户

用户一、lzycsd 密码lzycsd(用于新数据库)

用户二、lz密码lz (用于老数据库)

其次,使用 PL/SQL 用 lzycsd用户登陆,将new.dmp导入。这时,更新程序用的数据库(将来要用的数据库)在lzycsd的表空间中

使用PL/SQL 用lz用户登陆,将old.dmp导入,就是说老数据库中的数据都存在lz用户的表空间中

这时,操作目的就变为 将,lz用户中的数据导入lzycsd中。

实现方法:

首先作为lz用户登录 PL/SQL取得要导入的表(不能用lzycsd用户取得,因为lzycsd用户可能有新表)

一般来说 如果表命名都是TB_下划线的可以用下面方法快速获得表明并构造sql语句

首先在lz用户下(老数据库)写sql语句

select * from tabs where table_name like 'TB_%';

这样就会获得所有以tb_开头的表名

复制 然后 粘贴到 excel中

这样就生成一些sql语句

然后在lzycsd用户下(新数据库)

把更新程序中的录入的测试数据删除就可以了。(就是复制上面的sql语句)

然后 在lzycsd用户下 写下面类似语句

INSERT INTO 新表的表名 SELECT * FROM lz(旧数据库).旧表的表名;
commit;

一条一条的写?累死了。

上面不是复制表名了么

这样又生成一堆sql语句

复制到 PL/SQL中执行吧。有错?;COMMIT;那里出错了?

哦,应该是 ;回车COMMIT;

复制到word中替换把 别说你不会,不会就百度 哦也

在语句执行的过程中可能会出错,出错就对啦。如果你没改表结构还好点。如果改了肯定出错啦。

把出错的表记下来 单独处理!

 

posted @ 2009-11-18 09:26  TOYOE  阅读(967)  评论(0编辑  收藏  举报