外部数据包装器:跨数据类型源联合查询的实践
使用PostgreSQL FDW连接MySQL、CSV文件甚至远程pg库,实现异构数据联邦查询。重点讲解用户映射、下推优化和写操作限制。 · 难度:入门 · +10XP
外部数据包装器:跨数据类型源联合查询的实践
FDW允许PostgreSQL通过SQL直接查询外部数据源,无需ETL。本教程以mysql_fdw和file_fdw为例,展示如何创建外部服务器、用户映射和外部表,并分析查询下推的条件。你将学会在同一个查询里联合本地表和远程Oracle表。
-- 安装扩展并创建外部服务器
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 current_user SERVER mysql_server OPTIONS (username 'app', password 'secret');
-- 创建外部表
CREATE FOREIGN TABLE remote_orders (id INT, amount NUMERIC)
SERVER mysql_server OPTIONS (dbname 'shop', table_name 'orders');
-- 联合查询
SELECT * FROM local_customers c JOIN remote_orders r ON c.id = r.id;