PostgreSQL通过mysql_fdw连通MySQL实战

 更新时间:2026年03月03日 10:12:03   作者:IT邦德  
mysql_fdw就像是PostgreSQL和MySQL数据库之间的一座双向桥梁,本文就来详细的介绍一下PostgreSQL通过mysql_fdw连通MySQL实战,感兴趣的可以了解一下

mysql_fdw 就像是 PostgreSQL 和 MySQL 数据库之间的一座双向桥梁。它允许你在 PostgreSQL 中创建一个“外部表”,这个表直接映射到远程 MySQL 数据库中的真实表。之后,你就可以像操作本地 PostgreSQL 表一样,对这个外部表进行查询(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)​ 操作,而 mysql_fdw 会在背后自动完成所有与 MySQL 数据库的通信和数据转换工作。

1. 安装插件

你需要在 PostgreSQL 所在的服务器上安装 mysql_fdw,它依赖 MySQL 的客户端开发库。从GitHub或PGXN网站下载mysql_fdw源码包。

mysql_fdw GitHub下载地址:

https://github.com/EnterpriseDB/mysql_fdw

1)使用yum安装依赖和开发包
yum install postgresql-server-devel mysql-devel
2) 解压编译安装
unzip /opt/mysql_fdw-REL-2_9_3.zip -d /home/postgres
cd myql_fdw-REL-2_9_3
make USE_PGXS=1
make USE_PGXS=1 install

安装成功后,你需要重启 PostgreSQL服务,
或者至少让正在使用的数据库重新加载共享库。

2. 启用插件服务

以下是一个简单的使用示例,所有命令在 PoatgreSQL 中执行:

1)加载扩展插件
CREATE EXTENSION mysql_fdw;
2)创建服务器对象
CREATE SERVER mysql_server 
FOREIGN DATA WRAPPER mysql_fdw 
OPTIONS (host '192.168.3.11', port '3306');
3) 授权
GRANT USAGE ON FOREIGN 
SERVER mysql_server TO postgres;

3. 建立用户映射

CREATE USER MAPPING FOR postgres
SERVER mysql_server
OPTIONS (username 'root', password 'root@A123');

4. 处理数据

桥梁已经接通,最后一步就是在 PostgreSQL 这端创建一个“入口”,也就是外部表(Foreign Table)。这张表的列名和数据类型应该与 MySQL 中的源表相对应。

CREATE FOREIGN TABLE warehouse (
warehouse_id int,
warehouse_name text,
warehouse_created timestamp
)SERVER mysql_server
OPTIONS (dbname 'aidb', table_name 'warehouse');

这里要注意,mysql_fdw 的一个核心限制是为了确保能准确追踪和操作远程表中的特定行,它要求外部表定义中的第一列,必须对应远程MySQL表中的一个唯一列(如主键或具有唯一约束的列)。

接下里我们就可以在PostgreSQL 中 处理相关的数据了

1)插入数据 
INSERT INTO warehouse values (1, 'UPS', current_date);
INSERT INTO warehouse values (2, 'TV', current_date);
INSERT INTO warehouse values (3, 'Table', current_date);
2)删除更新数据
DELETE FROM warehouse where warehouse_id = 3;
UPDATE warehouse set warehouse_name = 'UPS_NEW' where warehouse_id = 1;
3)查看 执行计划
EXPLAIN VERBOSE 
SELECT warehouse_id, warehouse_name 
FROM warehouse 
WHERE warehouse_name LIKE 'TV' limit 1;

如果需要映射一个模式(Schema)下的多张表,使用 IMPORT FOREIGN SCHEMA命令会非常高效,它可以自动为你创建所有表的外部表定义 。

IMPORT FOREIGN SCHEMA someschema
FROM SERVER mysql_server
INTO public;

5.运维管理

当通过 mysql_fdw 连接 MySQL 进行运维时,可以查询以下 PostgreSQL 系统表和目录视图来查看和管理外部对象

查看所有外部表的定义
SELECT * FROM pg_foreign_table;
以标准 SQL 视角查看外部表
SELECT * FROM 
information_schema.foreign_tables;
查看 mysql_fdw 服务器的连接配置
SELECT * FROM pg_foreign_server;
查看连接到 MySQL 所用的用户名映射
SELECT * FROM pg_user_mappings;

总结

mysql_fdw 是一个极其便捷的“数据桥梁”工具。 它让跨数据库的数据访问变得像访问本地表一样自然,特别适合混合架构下的数据查询、迁移过渡期以及临时的数据整合需求。

到此这篇关于PostgreSQL通过mysql_fdw连通MySQL实战的文章就介绍到这了,更多相关PostgreSQL连通MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • postgresql数据库 timescaledb 时序库 把大数据量表转换为超表的问题

    postgresql数据库 timescaledb 时序库 把大数据量表转换为超表的问题

    这篇文章主要介绍了postgresql数据库 timescaledb 时序库 把大数据量表转换为超表,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • PostgreSQL自增主键序列的避坑指南

    PostgreSQL自增主键序列的避坑指南

    自增主键是数据库表设计中的经典策略,确保数据唯一性和提升写入性能,本文主要介绍了PostgreSQL自增主键序列的避坑指南,具有一定的参考价值,感兴趣的可以了解一下
    2026-06-06
  • PostGIS中ST_Union与ST_Collect的区别与使用详解

    PostGIS中ST_Union与ST_Collect的区别与使用详解

    这篇文章主要介绍了PostGIS中ST_Union与ST_Collect的区别与使用,对于初入PostGIS世界的新手来说,众多的地理空间函数可能会让人感到眼花缭乱,不知从何下手,而ST_Union与ST_Collect这两个函数,由于它们在功能上存在一定的相似性,常常容易被混淆,需要的朋友可以参考下
    2026-01-01
  • postgresql 替换空格 换行和回车的操作

    postgresql 替换空格 换行和回车的操作

    这篇文章主要介绍了postgresql 替换空格 换行和回车的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL云服务器安装配置指南

    PostgreSQL云服务器安装配置指南

    这篇文章主要介绍了PostgreSQL的相关配置,包括安装、基本配置、安全加固等,重点介绍了配置文件调整、远程访问配置、访问控制配置等内容,并强调了连接池和索引优化的重要性,需要的朋友可以参考下
    2026-05-05
  • Postgresql备份和增量恢复方案

    Postgresql备份和增量恢复方案

    这篇文章主要给大家介绍了关于Postgresql备份和增量恢复的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Postgresql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • Postgres copy命令导入导出数据的操作方法

    Postgres copy命令导入导出数据的操作方法

    最近有需要对数据进行迁移的需求,由于postgres性能的关系,单表3000W的数据量查询起来有一些慢,需要对大表进行切割,拆成若干个子表,涉及到原有数据要迁移到子表的需求,这篇文章主要介绍了Postgres copy命令导入导出数据的操作方法,需要的朋友可以参考下
    2024-08-08
  • 基于PostgreSQL的时序数据库TimescaleDB的基本用法和概念

    基于PostgreSQL的时序数据库TimescaleDB的基本用法和概念

    时序数据是指按照时间顺序存储的数据,TimescaleDB是一个开源的、扩展了PostgreSQL的时序数据库扩展,本文就给大家详细的介绍一下基于PostgreSQL的时序数据库TimescaleDB的基本用法和概念,需要的朋友可以参考下
    2023-06-06
  • Postgresql 数据库转义字符操作

    Postgresql 数据库转义字符操作

    这篇文章主要介绍了Postgresql 数据库转义字符操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL Public 模式的风险及安全迁移问题小结

    PostgreSQL Public 模式的风险及安全迁移问题小结

    本文主要讨论了PostgreSQL中public模式的问题和解决方案,public模式默认对所有用户开放访问权限,容易发生命名冲突,且难以维护和隔离,修改或删除它可能导致扩展无法正常工作,为解决这问题,建议新建模式,将public模式下的所有业务对象迁移过去
    2024-10-10

最新评论