0

我有一个关于 oracle 复制命令的问题:是否可以在数据库之间复制数据(结构是否相同)和尊重关系而无需(!)编写程序?

更准确地说:表 B 通过外键(B.FK -> A.PK;没有关系信息存储在数据库本身中)引用(通过 B.FK)表 A(A.PK)。密钥由序列生成,用于为所有表创建 PK。

那么如何在保持关系完整的同时复制表 A 和 B,并使用目标 DB 序列为复制的数据生成新的主键(我不能使用“原始”PK 值,因为它们可能已经在同一个表中用于不同的数据集)?

我怀疑复制命令是否能够处理这种情况,但是实现所需行为的方法是什么?

谢谢马蒂亚斯

4

2 回答 2

0

我通常更喜欢 db 链接,然后使用 sql insert 语句来复制数据。在您的场景中,首先使用 DB 链接插入表 A 的数据,然后插入表。如果你反过来尝试,你会出错。

有关 DB 链接的信息,您可以查看此链接: http ://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm

于 2013-09-22T09:02:39.347 回答
0

Oracle 有几种不同的方式将数据从一个数据库移动到另一个数据库,其中 SQL*Pluscopy命令是最基本的,也是最不令人满意的。编写自己的复制例程(正如@OldProgrammer 建议的那样)也好不到哪里去。

您使用的是 11g,因此请使用内置的 Streams 功能进入 21 世纪。

无法跨数据库同步序列。有一种解决方法,不可估量的 Tom Kyte 对此进行了解释。

于 2013-09-22T08:48:37.230 回答