oracle中如果用imp命令重复导入一个dmp文件的话,会有问题吗?

我记得好像第二次会导入失败,即使使用ignore参数也会导入失败,那ignore参数在什么情况下使用呢?

如果导入过程中,如果没有设置“ignore =y”第二次因为会执行创建表操作,就会报错,那么第二次就无法执行,会直接回滚。
如果已经设置过“ignore =y”,可能会导致数据重复插入(没主键的表都会重复插入)。
备注:数据库操作要慎重,最好在每次操作前确认好在进行,否则回滚数据很难办。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-09
要看你的表的设置吧,要是有PKEY的话,怎么忽略都不可能成功啊
要是没有相关的设置话,必然可以的追问

我导入的是全库,数据库中肯定有主健的表啊!那就是说导入有主键的表就没戏了!

追答

重复导入一个dmp文件,那里面的数据肯定重复啊~你的表又有主键,那不是必然会报错么?
里面数据完全是重复的为什么要重复导入呢?希望你说下具体目的!
还有可以把你的语句、相关输出给出来,会比较好~

追问

第一次是在早些时候导入的。过了一段时间,对主库进行了第二次的导出。
现在把第二次导出的数据imp至备库时,部分数据会与第一次导入的重复。
imp system/manager@test file=....... full=y ignore=y ;

追答

问题:
首先这种情况,你应该在主库导出的时候用增量导出。也就是指导出增量部分。
其次,ignore=y 只能忽略创建错误。比如,被导入的库里有表 abc,在导入的过程中,你又建表abc,这个时候,数据库会忽略这个错误并继续执行,不是你理解的忽略一切错误。
建议:
1.如果你能清楚的知道两个库之间差异的数据,你可以重新制作导出文件。再尝试。
2.如果1不行,建议你用一张表中转下。把备份库里的数据先备份到这种中间表后,清空表,再导入,然后作数据合并,建议用meger into。
注意:用中间表的方式,很给数据库增加很多的垃圾信息。操作的时候合理使用清空指令。

本回答被提问者采纳
相似回答