Postgres:我们如何保存使用外部数据包装器创建的外部表的数据

问题描述:

我想通过创建外部表来使用foreign_database_wrapper将Oracle数据库迁移到Postgres。Postgres:我们如何保存使用外部数据包装器创建的外部表的数据

但是由于外部表的行为就像Oracle的一个视图,因此在执行任何查询时,它会从原始源获取数据,因此会增加处理时间。到目前为止,为了在Postgres结束时保持物理数据,我创建了表并在其中插入这些数据。

如:create table employee_details as select * from emp_det;

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

但我觉得这个过程是一种多余的,我们不时需要处理此表(新的插入,更新或删除)

因此,如果任何人都可以分享一些相关的方式,我可以保存这些数据与其他模式。

Regards,

查看完全相同的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; 
+0

Laurenz Albe,为了刷新这些创建的MATERIALIZED VIEW我使用pgAgent创建了作业。作业成功创建,但在运行该作业时,它不处理给定的SQL代码。请帮助。对于我已经创建票45670622。 – Pooja