【问题标题】:Refreshing Oracle database tables after initial copy is made完成初始复制后刷新 Oracle 数据库表
【发布时间】:2019-04-11 22:23:56
【问题描述】:

我有一个生产和开发数据库(当然在不同的系统上)。许多个月前,我将生产数据库复制到了开发系统中。我当时使用 exp/imp。从那时起,生产数据库中发生了很多变化,我想将其复制到开发数据库中。我宁愿不清除开发数据库并重新开始,因为我必须将数据添加到开发数据库中。

我最初的想法是使用 MERGE INTO 来复制新记录。但这显然需要我对表格执行此操作,并列出所有表格的所有字段。我们在这里谈论数百个表和数千个字段。不是一个很好的解决方案。

有没有更简单的方法?

【问题讨论】:

  • 每当我对表或列的数量感到不知所措时,我总是求助于从all_tab_columns 这样的视图生成这些查询。花一天时间编写将为您生成这数百个 MERGE 查询的查询,然后您可以根据需要重复使用它们来刷新。

标签: sql database oracle oracle11g


【解决方案1】:

为什么不使用 impdp 的 TABLE_EXISTS 参数将新数据附加到现有表中?重复键将出错,但其余数据仍应导入。结果会有点乱。在运行 TRUNCATE 之前,您可以将整个生产表带到测试中的任何表。禁用 FK。导入后重新启用。 - - 另一个选项创建一个数据库链接并在所有数据不在现有测试表中的表中生成 INSERT/SELECT。您可能还想在运行前禁用 FK,并在完成后重新启用。

【讨论】:

    猜你喜欢
    • 2022-10-25
    • 2011-06-14
    • 2015-02-17
    • 2012-03-21
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多