大家好,我现在需要将oracle8的数据移植的oracle9中,其中以为命名标准和业务需求的改变,其中很多表的表明、列明都会改名,表的结构也可能改变,例如:学生表  oracle8的STU(NAME VARCHARE2(10),AGE INTEGER)  变成了oracle9的STUDENT(S_NAME VARCHARE2(10),S_AGE INTEGER,S_ID CHAR(12)) ,就是名字改了还多了一列,在这种情况下如何大批量移植数据啊,我现在的想法是把oracle8中的进行修改,让其所有的表和oracle9的一样,然后进行导入,或者先直接导入再修改表结构,不知道有没有更好的办法啊,这样工作量有些大,而且容易出错,有没有更好的办法做到呢?谢谢大家了。

解决方案 »

  1.   

    你这个修改如果有规律的话,就可以批处理进行,要不工作量当然大了。
    另外也可以先导出建表的DDL成文本文件,按你的要求做修改后再导入。
      

  2.   

    一、1、先把表结构导入到9i数据库,
    2、再修改表结构
    3、在导数据。
    二、如果你新增的那些字段没什么主键或外键约束的话直接exp,再imp到9的数据库中。在修改表结构
      

  3.   

    复杂的话写迁移过程就可以了!在oracle9建好你要的表STUDENT(S_NAME VARCHARE2(10),S_AGE INTEGER,S_ID CHAR(12))。CREATE OR REPLACE PROCEDURE TEST1 IS
    BEGIN
      INSERT INTO STUDENT
        (S_NAME, S_AGE, S_ID)
        SELECT NAM, AGE, S_ID.NEXTVAL FROM STU;
      COMMIT;
    END TEST1;其中S_ID为序列号
      

  4.   

    将8导入到9I中在9I中调整结构,rename stu to studentalter table student rename column name to s_name
      

  5.   

    1.在Oracle8中:
    alter table stu add s_id varchar(12);
    2.如果两台服务器能够连通的话,在Oracle9中使用net configuration assistant配置一个指向Oracle8的连接串,如string8;
    3.建立一个db_link8:create db_link ...  请楼主查一下语句。
    4.在oracle9中用sqlplus:
    insert into student as select * from stu@db_link8 where ...;注意:要在student中建立主关键字,综合考虑一下。