AI 迁移提示
本文由 AI 协助从旧站迁移,尚未完成逐篇人工审校;内容如有疏漏,将在复核后修订。
PostgreSQL 不支持跨库查询,可通过 Foreign Data Wrapper(FDW) 访问外部数据库的表,实现类似跨库查询的效果。
相关文章:
PostgreSQL 安装指南/posts/postgresql-installPostgreSQL 远程访问与数据目录迁移/posts/postgresql-config
一、安装扩展
-- 在本地数据库执行 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;
警告
导入整个 schema 可能与本地表名冲突,建议使用 LIMIT TO 指定需要的表。
导入后即可像本地表一样使用。
五、管理命令
-- 查看所有外部服务器 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;
警告
CASCADE 会同时删除所有依赖该服务器的外部表,可能导致业务中断。请确认无依赖后再执行。
评论区
评论加载中...