0

我有一个带有约 40 个表的 Oracle 数据库。其中一些具有 ID = 1、2、3、4、5... 和约束。

现在我想将这些数据从所有表“复制”到另一个已经有相同表的 Oracle 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 映射等?

4

2 回答 2

0

这是一个有点脏的解决方案,但如果所有 ID 都是数字,您可以先将旧 ID 更新为负数ID = -1 * ID(或者只是在 select 语句中即时执行)然后插入。在这种情况下,您的所有 ID 都是一致的,约束是有效的,并且它们可以与新数据一起存在。

于 2017-09-15T12:45:26.723 回答
0

首先,您需要 expdp,其次您需要在 impdp 中重新映射架构新架构名称

于 2017-09-15T15:09:18.380 回答