操作原因:程序更新,数据库也需要更新.在程序开发的时候使用的数据库结构是新数据库结构
但是老数据库中有历史数据,需要整合在新数据库中
操作具体步骤:
首先,将老数据库,和新数据库分别导出。比如叫做 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中替换把 别说你不会,不会就百度 哦也
在语句执行的过程中可能会出错,出错就对啦。如果你没改表结构还好点。如果改了肯定出错啦。
把出错的表记下来 单独处理!