【问题标题】:Can Oracle impdp import updated and new rows, without reloading all rows?Oracle impdp 可以在不重新加载所有行的情况下导入更新的和新的行吗?
【发布时间】:2017-12-17 02:53:05
【问题描述】:

假设我有 2 个数据库 A 和 B,它们最初具有相同的架构、表等,并且这些表中的数据相同。

然后,用户只能在一个月内修改数据库 A,而 B 在该月内不会更改。月底,我想把数据从A移到B。

如果可能,我只想从 A 获取修改后的数据和新数据。我可以使用 expdp 从 A 导出,使用查询检查该月内添加或更新的记录,但我不确定是否/如何可以使用 impdp 导入数据。

我可能弄错了,但它看起来不像 impdp 处理导入新行和更改行而不重新加载所有行的任何 TABLE_EXISTS_ACTION 选项(SKIP、APPEND、TRUNCATE、REPLACE)。

从 Oracle 站点,“APPEND 从源加载行并保持现有行不变。”,因此据我了解,不能使用它,因为它无法处理导入目标 (A) 中存在的任何行, 但在源代码 (B) 中进行了修改。

有没有一种方法可以让 impdp 只导入新行并更新现有行?还是我必须将所有数据从 A 导出并导入到 B?

【问题讨论】:

    标签: database oracle oracle11g impdp


    【解决方案1】:

    “如果可能,我只想从 A 获取修改后的新数据”

    你为什么在乎?无论您拆除所有内容还是仅应用增量,最终状态都是相同的。

    一般来说,truncate + wholesale insertappend + selective update 更有效,尤其是在规模上,这可能是数据泵导入不包括更新操作的原因。

    【讨论】:

    • 我关心的唯一原因是因为我认为这种方式可能会更快,因为它会导入更少的行(我不是 DBA,我只完成了一次“真正的”数据库导出/import 之前,除了一些测试)。如果不是这样,那么使用 TRUNCATE 并导入所有数据就可以了。
    猜你喜欢
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多