我使用postgresql外部扩展mysql_fdw,使postgresql与mysql数据库做数据同步,但是这个操作同步过来的表都在postgresql外部表中,我有分析工具需要连接postgresql的内部表(普通表),外部表不识别,请问怎么做?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在 PostgreSQL 中,使用 mysql_fdw
外部数据包装器(foreign data wrapper)确实可以实现与 MySQL 数据库的数据同步,但正如您所提到的,通过这种方式访问的表实际上是外部表,而非 PostgreSQL 的本地(内部)表。如果您需要将这些外部表的数据用于不支持外部表的分析工具,您可以考虑以下几种方法来解决这个问题:
数据导入:
INSERT INTO ... SELECT FROM
语句从外部表插入数据到本地表。INSERT INTO local_table_name (column1, column2, ...)
SELECT column1, column2, ...
FROM external_table_name;
物化视图:
CREATE MATERIALIZED VIEW materialized_view_name AS
SELECT * FROM external_table_name;
并且可以设置刷新策略:
REFRESH MATERIALIZED VIEW materialized_view_name WITH DATA;
触发器和规则:
使用中间件或数据同步服务:
选择哪种方法取决于您的具体需求,比如数据量大小、同步频率要求以及是否需要实时同步等。如果分析工具对数据新鲜度有较高要求,可能需要采用实时性更高的解决方案。