113 字
1 分钟
PostgreSQL 外部表(FDW)跨库查询配置
2026-01-26

PostgreSQL 不支持跨库查询,可通过 Foreign Data Wrapper(FDW) 访问外部数据库的表,实现类似跨库查询的效果。

相关文章:PostgreSQL 安装指南 · PostgreSQL 远程访问与数据目录迁移

一、安装扩展#

-- 在本地数据库执行
CREATE EXTENSION IF NOT EXISTS postgres_fdw;

二、创建远程服务器#

CREATE SERVER remote_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (
host '192.168.1.100',
dbname 'target_db',
port '5432'
);

三、创建用户映射#

CREATE USER MAPPING FOR postgres
SERVER remote_server
OPTIONS (
user 'postgres',
password 'remote-password'
);

四、导入远程表#

-- 导入单个表
IMPORT FOREIGN SCHEMA public
LIMIT TO (table_name)
FROM SERVER remote_server
INTO public;
-- 导入多个表
IMPORT FOREIGN SCHEMA public
LIMIT TO (table1, table2, table3)
FROM SERVER remote_server
INTO public;
-- 导入整个 schema(慎用)
IMPORT FOREIGN SCHEMA public
FROM SERVER remote_server
INTO public;

导入后即可像本地表一样使用。

五、管理命令#

-- 查看所有外部服务器
SELECT * FROM pg_foreign_server;
-- 查看导入的外部表
SELECT * FROM information_schema.foreign_tables;
-- 修改服务器连接信息
ALTER SERVER remote_server
OPTIONS (SET host '192.168.1.200', SET port '5432', SET dbname 'new_db');
-- 修改用户映射密码
ALTER USER MAPPING FOR CURRENT_USER
SERVER remote_server
OPTIONS (SET password 'new-password');
-- 增加批量获取行数(优化性能)
ALTER SERVER remote_server OPTIONS (ADD fetch_size '50000');
-- 删除外部表
DROP FOREIGN TABLE table_name;
-- 删除用户映射
DROP USER MAPPING FOR postgres SERVER remote_server;
-- 删除服务器(CASCADE 同时删除依赖的外部表)
DROP SERVER remote_server CASCADE;
-- 删除扩展
DROP EXTENSION postgres_fdw;
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

PostgreSQL 外部表(FDW)跨库查询配置
https://blog.olinl.com/posts/postgresql-fdw/
作者
顾拾柒
发布于
2026-01-26
许可协议
CC BY-NC-SA 4.0

目录