如何插入整个数据库并替换当前数据?

如何插入整个数据库并替换当前数据?

我有两个数据库,分别是 A 和 B。它们是一样的,只是数据记录是最新的还是旧的。我想从最新的 (A) 扩展并导入到较旧的 (B)。

当我通过以下命令导入旧版本时

imp 用户名/密码文件=xxx.dmp fromuser=Auser touser=Buser

这实际上不会导入,因为 B 已经拥有所有表。

所以有人知道是否有导入和替换当前数据库的命令吗?谢谢

顺便说一下,我正在使用 Oracle

答案1

导入旨在加载整个架构、对象和数据。虽然有一些灵活性 - 加载单个表,只加载数据 - 但它不能很好地处理目标架构中存在包含数据的表的情况。如果目标架构中的旧数据包含较新源架构中已更新或删除的记录,这尤其成问题。

如果您使用的是 Oracle 10g 或更高版本,则解决方案是使用 Data Pump。此实用程序具有更强大的功能,包括能够用源模式中的数据替换目标模式中现有表或现有表中的数据。 了解更多

如果您使用的是早期版本的数据库,则有一些解决方法。 了解更多。 但您可能必须禁用所有约束并在一轮后处理中修复数据。

答案2

或者,如果您负担得起,请从 B 中删除相关表,然后使用 import 或 impdp 重新创建它们。我们通常会删除整个架构(删除用户 UUUU 级联),然后进行新的导入,例如当我们从生产“刷新”测试/开发数据库时。

答案3

只需使用数据泵(expdp/impdp 而不是 exp/imp)并指定TABLE_EXISTS_ACTION=截断(或根据情况更换)。

相关内容