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

Postgres: How can we preserve data of foreign table which is creating using foreign data wrapper

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

但是由于外部 tables 就像 Oracle 的视图一样,所以在执行任何查询时,它会从原始源中动态获取数据,因此会增加处理时间。

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

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

其中 employee_details 是实体 table 而 emp_det 是外国 table

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

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

此致,

看到相同的Github issue

oracle_fdw 不在 PostgreSQL 端存储 Oracle 数据。 每次访问国外table直接访问Oracle数据库

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

CREATE MATERIALIZED VIEW emp_det_mv AS SELECT * FROM emp_det;

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

REFRESH MATERIALIZED VIEW emp_det_mv;