用imp导入记录时,如果目的表存在主键相同但是其它字段内容不同的记录,如果此时我希望用源记录覆盖目的记录,请教参数是什么、imp命令该 导入主键,加参数: CONSTRAINTS=Y 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的imp语句如下:imp aostareip/aostareip@eipdb file=d:\temp.db full=y ignore=y这个语句可以从temp.db文件把数据导入到eipdb数据库上,temp.db文件中只有T_SERIALNUM表的内容:SERIALNUM(PK) NAME--------------------------------------------------------------------------------26 version27 fieldID28 modelSys但是我的目的数据库中表T_SERIALNUM的记录为:SERIALNUM(PK) NAME--------------------------------------------------------------------------------26 version27 fieldID28 SysID可以看到最后一条记录的Name字段内容不一样,现在我希望用temp.db文件中的最后一条记录覆盖目的数据库该表的最后一条记录,因为该记录关键字内容都为28,所以上面的imp语句因为违反了唯一约束条件而不成功,我试了 newusers(newusers) 兄建议的加参数CONSTRAINTS=Y,写成如下模样:imp aostareip/aostareip@eipdb file=d:\temp.db full=y ignore=y constraints=y也不成功。 如是要覆盖原记录, imp aostareip/aostareip@eipdb file=d:\temp.db full=y ignore=y constraints=y 不行,因为IMP命令到发出操作都是 INSERT 语句,可见有主键存在的情况下,是肯定没有办法 导入相同主键的记录的,把目标表的主键屏蔽也只能是追加记录而以。所以要到入备份文件的记录 只能先删除表的记录或是删除目的表中在temp.db文件相同主键的记录。 谢谢LGQDUCKY(飘)兄,用什么办法可以配合imp删除目的表中的记录呢,因为我在imp的时候可能不知道temp.db中到底有哪些表。 据我所知道的,IMP命令所带的参数是没有办法删除目的表中的记录的, 加上 IGNORE = Y 参数只能是IMP出错时,进程将不会被中断,所以自己只 能辛苦点了,如真的要覆盖记录,你可以建立个临时用户把TEMP.DB文件导 进去,在做比较. 谢了,现在已经清楚了imp命令执行的是insert语句,所以永远不可能如此覆盖。 select ||是什么意思~? Oracle创建循环bat脚本 事务和并发操作之间的困惑 关于rowcount的问题? 我在执行SQL语句的时候出现了问题,请大家帮忙解决,谢谢! 基础问题 请问,哪里有备份软件。 数据库恢复,急!!! 简单的问题 可不可以强制让优化器进行index unique scan? 同样的sql语句,为什么执行结果不一样? sq plus中认识'\n'吗?
imp aostareip/aostareip@eipdb file=d:\temp.db full=y ignore=y
这个语句可以从temp.db文件把数据导入到eipdb数据库上,temp.db文件中只有T_SERIALNUM表的内容:
SERIALNUM(PK) NAME
--------------------------------------------------------------------------------
26 version
27 fieldID
28 modelSys但是我的目的数据库中表T_SERIALNUM的记录为:
SERIALNUM(PK) NAME
--------------------------------------------------------------------------------
26 version
27 fieldID
28 SysID可以看到最后一条记录的Name字段内容不一样,现在我希望用temp.db文件中的最后一条记录覆盖目的数据库该表的最后一条记录,因为该记录关键字内容都为28,所以上面的imp语句因为违反了唯一约束条件而不成功,我试了 newusers(newusers) 兄建议的加参数CONSTRAINTS=Y,写成如下模样:
imp aostareip/aostareip@eipdb file=d:\temp.db full=y ignore=y constraints=y
也不成功。
imp aostareip/aostareip@eipdb file=d:\temp.db full=y ignore=y constraints=y
不行,因为IMP命令到发出操作都是 INSERT 语句,可见有主键存在的情况下,是肯定没有办法
导入相同主键的记录的,把目标表的主键屏蔽也只能是追加记录而以。所以要到入备份文件的记录
只能先删除表的记录或是删除目的表中在temp.db文件相同主键的记录。
加上 IGNORE = Y 参数只能是IMP出错时,进程将不会被中断,所以自己只
能辛苦点了,如真的要覆盖记录,你可以建立个临时用户把TEMP.DB文件导
进去,在做比较.