我有一个带有~40个表的Oracle DB。其中一些ID = 1,2,3,4,5 ......和约束。
现在我想"复制"这些数据从所有表到另一个已经具有相同表的Oracle DB。
问题是另一个DB也有记录(可以是相同的ID = 1,2,3,77,88 ......)而且我不想丢失它们。
是否有一些自动方式将数据从一个表复制到另一个表,并且ID移位和约束?
1, 2, 3, 77, 88 +
**1, 2, 3, 4, 5**
=
1, 2, 3, 77, 88, **89, 90, 91, 92, 93**
或者我需要自己做?
insert into new.table
select new.sequence_id.nextval, t.* from old.table t
为所有40个表保存new.id - old.id映射等等?
答案 0 :(得分:0)
这是一个有点脏的解决方案,但如果所有ID都是数字,您可以先将旧ID更新为负数ID = -1 * ID
(或者只是在动态选择语句中执行)然后插入。在这种情况下,您的所有ID都是一致的,约束是有效的,并且它们可以与新数据一起生效。
答案 1 :(得分:0)
第一,你需要expdp,是第二个你在impdp中重映射架构的新架构名称