我通过Oracle的命令行工具 IMP 导入 DMP 文件 结果出错。大意是说主健约束有问题。原文提示如下:
正在将SCOTT的对象导入到 SCOTT
“ALIER SESSION SET CURRENT——SCHEMA= “SCOTT””
“ALTER TABLE “EMP” ENABLE CONSTRAINT “FK_DEPTNO””
成功终止导入,但出现警告。请问怎么解决?还有怎样只导入一个名称空间里的数据而不是整个数据库?

解决方案 »

  1.   

    你别着急,你去oracle的版本问问
      

  2.   

    所有对象全部导入到指定的账户下:  Imp system/123456@ATSTestDB file=c:\export.dmp fromuser=sys touser=system  其中fromuser=sys为.dmp文件里的对象的原先的owner, touser=system 为作为导入的对象的新的Owner.  忽略/插入数据  Imp system/123456@ATSTestDB file=c:\export.dmp ignore=y  其中ignore=y告诉imp.exe把数据直接插入到相应对象(并且如果导入的对象里面有其他的对象,如约束,索引等,会在数据插入后被创建)。  2 加载其中的指定表table1,table2  imp system/123456@ATSTestDB file=C:\export.dmp tables=(table1,table2)  3 忽略加载约束  有时候导数据进来的时候,我们不需要把它的约束,比如一些外键约束等都导进来,可以加上参数constraints=N  imp system/123456@ATSTestDB file=C:\export.dmp tables=(table1,table2) constraints=N  4 不加载索引(比如唯一性的索引)  imp system/123456@ATSTestDB file=C:\export.dmp tables=(table1,table2) indexs=N  5 只加载结构,不加载数据  如果只要表的结构等定义(约束,触发器),那么不要里面的数据,可以加上参数rows=N  imp system/123456@ATSTestDB file=C:\export.dmp tables=(table1,table2) rows=N  对于上述操作登陆操作的对象system是管理员,如果不是管理员,而是普通用户,那么这个用户必须有创建删除对象的权利,对象可能包括 表,视图,方法,存储过程等等常见的对象。为什么“可能”包括?因为这个视导入导出的时候是否涉及相关类型的对象而定。
      

  3.   

    导入时,加入参数让 Oracle Imp 忽略导入的错误。
    [code=BatchFile]imp username/password@service file=fiel1.dmp full=y ignore=y[/code]可以指定 FromUser 和 ToUser 指定要导入的用户表。