我有两个数据库,说A和B.他们是一样的,期望数据logging是最新的或旧的。 我想从最新的一个(A)和最新的(B)。
当我通过以下命令导入旧的
imp用户名/密码file = xxx.dmp fromuser = Auser touser = Buser
这不会实际导入,因为B已经拥有了所有的表格。
所以任何一个知道有一个导入命令,并取代当前的数据库。 谢谢
顺便说一下,我正在使用Oracle
导入用于加载整个模式,对象和数据。 尽pipe有一些灵活性 – 加载单个表,只是加载数据 – 它不能正确处理目标模式中数据表的存在。 如果目标模式中的旧数据包含已在新的源模式中更新或删除的logging,则这尤其是个问题。
如果您使用的是Oracle 10g或更高版本,则解决scheme是使用数据泵。 此实用程序具有更强大的function,包括使用源模式中的数据replace目标模式中现有表中的现有表或数据的function。 了解更多 。
如果您使用的是较早版本的数据库,则有一些解决方法。 了解更多。 但是,您可能必须禁用所有约束,并在一轮后期处理中修复数据。
只需使用Datapump(expdp / impdp而不是exp / imp)并指定TABLE_EXISTS_ACTION = TRUNCATE (或者REPLACE,如适用)。
或者,如果你能负担得起,从B中删除有问题的表并使用import或impdp重新创build它们。 我们通常删除整个模式(drop user UUUU cascade),然后重新导入,例如当我们从生产中“刷新”testing/开发数据库时。