【问题标题】:Postgres: How can we preserve data of foreign table which is creating using foreign data wrapperPostgres:我们如何保存使用外部数据包装器创建的外部表的数据
【发布时间】:2017-07-28 18:42:07
【问题描述】:

我正在尝试通过创建外部表使用 foreign_database_wrapper 将 Oracle 数据库迁移到 Postgres。

但由于外部表的作用类似于 Oracle 的视图,因此在执行任何查询时,它会从原始源即时获取数据,因此会增加处理时间。

到目前为止,为了在 Postgres 端维护物理数据,我正在创建表并将这些数据插入其中。

例如:create table employee_details as select * from emp_det;

其中employee_details 是物理表,emp_det 是外部表

但我觉得这个过程有点多余,有时我们需要操作这个表(新插入、更新或删除)

因此,如果有人可以分享一些相关的方式,我可以通过其他方式保存这些数据。

问候,

【问题讨论】:

    标签: database oracle postgresql oracle-fdw


    【解决方案1】:

    查看相同的Github issue

    oracle_fdw 不在 PostgreSQL 端存储 Oracle 数据。 对外部表的每次访问都直接访问 Oracle 数据库。

    如果您想要一份物理位于 PostgreSQL 数据库中的数据副本,您可以按照您描述的方式进行操作,也可以使用物化视图:

    CREATE MATERIALIZED VIEW emp_det_mv AS SELECT * FROM emp_det;
    

    这将做同样的事情,但更简单。要刷新数据,您可以运行

    REFRESH MATERIALIZED VIEW emp_det_mv;
    

    【讨论】:

    • Laurenz Albe,为了刷新这些创建的 MATERIALIZED VIEW,我使用 pgAgent 创建了作业。作业已成功创建,但是当我运行该作业时,它不会处理给定的 SQL 代码。请帮忙。同样,我创建了票 45670622。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多