神谕。如何 exp/imp 从一个数据库到另一个已经有数据的数据库?
Oracle. How to exp/imp data from one DB to another which already has data?
我有一个约 40 tables 的 Oracle 数据库。其中一些具有 ID = 1, 2, 3, 4, 5... 和约束。
现在我想 "copy" 从所有 tables 到另一个已经有相同 tables 的 Oracle 数据库。
问题是另一个数据库也有记录(可以是相同的ID = 1, 2, 3, 77, 88 ...),我不想丢失它们。
是否有一些自动化的方法可以通过 ID 转换和约束将数据从一个 table 复制到另一个?
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 tables 保存 new.id - old.id 映射等等等等?
这是一个有点脏的解决方案,但如果所有 ID 都是数字,您可以先将旧 ID 更新为负数 ID = -1 * ID
(或者只是在 select 语句中动态执行)然后执行插入。在那种情况下,您的所有 ID 都是一致的,约束是有效的,并且它们可以与新数据一起使用。
首先,您需要 expdp,其次,您需要在 impdp 中重新映射架构新架构名称
我有一个约 40 tables 的 Oracle 数据库。其中一些具有 ID = 1, 2, 3, 4, 5... 和约束。
现在我想 "copy" 从所有 tables 到另一个已经有相同 tables 的 Oracle 数据库。
问题是另一个数据库也有记录(可以是相同的ID = 1, 2, 3, 77, 88 ...),我不想丢失它们。
是否有一些自动化的方法可以通过 ID 转换和约束将数据从一个 table 复制到另一个?
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 tables 保存 new.id - old.id 映射等等等等?
这是一个有点脏的解决方案,但如果所有 ID 都是数字,您可以先将旧 ID 更新为负数 ID = -1 * ID
(或者只是在 select 语句中动态执行)然后执行插入。在那种情况下,您的所有 ID 都是一致的,约束是有效的,并且它们可以与新数据一起使用。
首先,您需要 expdp,其次,您需要在 impdp 中重新映射架构新架构名称