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;
我正在尝试使用 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;