-- 当前数据库为 sentry-- 开启扩展插件CREATE EXTENSION postgres_fdw;-- SELECT * FROM pg_extension;-- 或 \dx-- SELECT * FROM pg_foreign_data_wrapper;
1
2
3
4
5
6
7
创建外部服务器 映射远程数据库 IP 端口 数据库名
-- 创建外部服务器 映射远程数据库 IP 端口 数据库名CREATE SERVER foreign_server
FOREIGNDATA WRAPPER postgres_fdw
OPTIONS (host '127.0.0.1', port '5432', dbname 'sentry2');-- SELECT * FROM pg_foreign_server;-- 或 \des-- ALTER SERVER foreign_server OPTIONS (SET port '1921', SET host 'localhost', SET dbname '数据库名称');-- ALTER SERVER foreign_server OPTIONS (DROP host, DROP port);-- DROP SERVER foreign_server CASCADE;
1
2
3
4
5
6
7
8
9
创建本地登录远端的账号映射
-- for 后面的 postgres 是本地登录执行的用户名 -- option 里存储的是远程的用户密码CREATEUSER MAPPING
FORPUBLIC
SERVER foreign_server
OPTIONS (user'sentry', password '123456');-- \deu+
1
2
3
4
5
6
7
8
创建模式 将外部服务器的所有模式对象导入到本地模式 ft 中
CREATESCHEMA sentry2;importforeignschemapublicfrom server foreign_server into sentry2;
1
2
测试效果
-- 授权ALTERSCHEMA sentry2 TO grafana;-- GRANT SELECT ON ALL TABLES IN SCHEMA sentry2 TO grafana;SELECT id, name FROM sentry_project
UNIONALLSELECT id, name FROM sentry2.sentry_project;