用PLSQL developer导出表的数据为 .dmp格式的数据文件 ,迁移到其他机器上时 会因为 没有对应名称的表空间而导致一些表不能导入。想请教一下 该如何解决。 我不想在新的机器上建立同样的表空间,因为原来的命名不规范。 能不能先导出表结构,再迁移数据呢?像DB2一样。 那么导出的数据如何能不包含原始表空间的信息那? 因为含有CLOB字段,所以也不能用导出SQL语句的方式。望各位给予指导...

解决方案 »

  1.   

    解决: 
    方法一:可以将导出的dmp文件用UE打开,用16进制编辑器编辑,将原来的表空间名换成将要导入的表空间名并保存,然后通过imp进行导入,假如导出用户和导入用户不同,在导入时要指定fromuser,touser (当然直接在dmp文件中替换了也是可以的),这种方法比较简单,经测试成功,但对于较大的dmp文件就不适用了。 
    方法二:可以先导入建表的sql(这里需要注意导出sql时不支持clob字段,用pl/sql dev导出nvarchar2(225)又无法导出,所以建议使用pl/sql dev导出用户对象),然后将sql中的表空间名,用户名替换执行即可建表。然后再导入dmp文件,导入时可以忽略错误,但不知道为什么一些因为有外键的会无法导入(这个导入顺序上个人觉得orcle不会这么傻啊),没办法,只能导两次了。
      

  2.   

    imp 指定 indexfile参数,获得建表语句,执行之后,再导入表数据。
      

  3.   

    1.在新库上创建所有的数据库对象
    2.从旧库导出数据
    3.导入新库数据,忽略创建错误 (ignore=Y)
    imp帮助查看
      

  4.   


    感谢大家的回复, 想问一下导出用户对象的时候是不是在建表脚本里看不到外键的定义?外键的定义在dmp文件里? [zftang] 说由于外键原因需要导两次 是因为第一次可以将被参照表导入 再做一次可以将含有外键的表导入吗? 那这样会不会有表的数据重复了啊?因为忽略了建表的错误