我对oracle copy命令有疑问: 是否有可能在数据库之间复制数据(结构是否相同)并且在没有(!)编写程序的情况下一次性尊重关系?
更确切地说: 表B(通过B.FK)通过外键(B.FK-> A.PK;表示没有关系信息存储在db本身中)到表A(A.PK)。密钥由序列生成,用于为所有表创建PK。
那么如何在保持关系完整的同时复制表A和B并使用目标DBs序列为复制的数据生成新的主键(我不能使用"原始" PK值,因为它们可能已经在同一个表中用于不同的数据集)?
我怀疑复制命令是否能够处理这种情况但是实现所需行为的方法是什么?
由于 的Matthias
答案 0 :(得分:0)
Oracle有几种不同的方法可以将数据从一个数据库移动到另一个数据库,其中SQL * Plus copy
命令是最基本的,也是最不满意的。编写自己的复制例程(正如@OldProgrammer建议的那样)并没有好多少。
你正在使用11g,所以使用the built-in Streams functionality进入21世纪。
无法跨数据库同步序列。有一种解决方法,由the inestimable Tom Kyte解释。
答案 1 :(得分:0)
我通常更喜欢数据库链接,然后使用sql insert语句来复制数据。 在您的方案中,首先使用DB链接然后使用表插入表A的数据。如果您尝试其他方式,则会出错。
有关数据库链接的信息,您可以查看以下链接:http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm