正文

PostgreSQL使用MySQL作为外部表(mysql_fdw)(post后面)新鲜出炉

文章摘要

这篇文章介绍了如何通过PostgreSQL扩展插件在MySQL服务器上建立数据同步的连接。主要内容包括: 1. **插件扩展**:通过`CREATE EXTENSION mysql_fdw`扩展PostgreSQL插件,为MySQL提供数据同步功能。 2. **服务器对象创建**:创建PostgreSQL服务器对象`mysql_fdw`,作为MySQL的Foreign Data Wrapper,用于处理数据同步。 3. **用户映射**:配置PostgreSQL用户映射,使PostgreSQL用户在MySQL服务器上可见。 4. **外部表创建**:通过`CREATE FOREIGN TABLE warehouse`将PostgreSQL的仓库表映射到MySQL的仓库表。 5. **数据操作**:进行数据插入、查询、删除和更新操作,验证数据同步功能。 6. **查询优化**:通过`EXPLAIN VERBOSE`查看查询执行计划,优化数据同步的查询性能。 文章的核心内容是展示如何配置PostgreSQL插件,实现PostgreSQL与MySQL之间的数据同步连接,并通过外部表和查询优化实现高效的跨数据库数据操作。

– 加载扩展插件 CREATE EXTENSION mysql_fdw; — 创建服务器对象 CREATE SERVER mysql_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host ‘127.0.0.1’, port ‘3306’); — 创建用户映射 CREATE USER MAPPING FOR postgres SERVER mysql_server OPTIONS (username ‘foo’, password ‘bar’); — 创建外部表 CREATE FOREIGN TABLE warehouse ( warehouse_id int, warehouse_name text, warehouse_created timestamp ) SERVER mysql_server OPTIONS (dbname ‘db’, table_name ‘warehouse’); — 插入数据 INSERT INTO warehouse values (1, ‘UPS’, current_date); INSERT INTO warehouse values (2, ‘TV’, current_date); INSERT INTO warehouse values (3, ‘Table’, current_date); — 查询数据 SELECT * FROM warehouse ORDER BY 1; warehouse_id | warehouse_name | warehouse_created ————-+—————-+——————- 1 | UPS | 10-JUL-20 00:00:00 2 | TV | 10-JUL-20 00:00:00 3 | Table | 10-JUL-20 00:00:00 — 删除数据 DELETE FROM warehouse where warehouse_id=3; — 更新数据 UPDATE warehouse set warehouse_name=’UPS_NEW’ where warehouse_id=1; — 查看执行计划 EXPLAIN VERBOSE SELECT warehouse_id, warehouse_name FROM warehouse WHERE warehouse_name LIKE ‘TV’ limit 1; QUERY PLAN ——————————————————————————————————————– Limit (cost=10.00..11.00 rows=1 width=36) Output: warehouse_id, warehouse_name -> Foreign Scan on public.warehouse (cost=10.00..1010.00 rows=1000 width=36) Output: warehouse_id, warehouse_name Local server startup cost: 10 Remote query: SELECT `warehouse_id`, `warehouse_name` FROM `db`.`warehouse` WHERE ((`warehouse_name` LIKE BINARY ‘TV’))