【发布时间】:2013-09-22 17:02:39
【问题描述】:
我有一个关于 oracle 复制命令的问题: 是否可以在不(!)编写程序的情况下一次性在数据库之间复制数据(结构是否相同)和尊重关系?
更准确地说: 表 B 通过外键(B.FK -> A.PK;没有关系信息存储在数据库本身中)引用(通过 B.FK)表 A(A.PK)。密钥由序列生成,用于为所有表创建 PK。
那么如何在保持关系完整的同时复制表 A 和 B,并使用目标 DB 序列为复制的数据生成新的主键(我不能使用“原始”PK 值,因为它们可能已经在同一不同数据集的表)?
我怀疑复制命令是否能够处理这种情况,但是实现所需行为的方法是什么?
谢谢 马蒂亚斯
【问题讨论】:
-
复制命令是 sql*plus -only 命令。不是 SQL 的一部分。将带有序列的表复制到另一个数据库可能会很痛苦。不确定您拥有多少数据或需要多久执行一次。有多种方法可以做到这一点。您可以创建一个临时表来存储旧序列并映射到新数据库中的新序列,然后编写一个函数在插入语句中进行替换。太长了,无法在这里发表评论。