暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【赵渝强老师】使用postgre_fdw访问外部PostgreSQL

原创 赵渝强老师 2025-10-31
97

1.png
通过使用file_fdw扩展使得PostgreSQL能够访问外部文件系统中的数据文件,同样通过使用postgres_fdw扩展可以使得PostgreSQL能够访问外部远端的PostgreSQL数据库中的数据。

aaa11.png
点击这里查看视频讲解:【赵渝强老师】使用postgre_fdw访问外部PostgreSQL

​下面通过具体的步骤操作来演示如何使用postgres_fdw扩展。

(1)进入PostgreSQL源码目录下的contrib/postgres_fdw目录,编译并安装postgres扩展。

cd postgresql-15.3/contrib/postgres_fdw/ make make install # 编译完成后,会在当前目录下生成postgres_fdw.so文件。

(2)修改postgresql.conf文件中的shared_preload_libraries参数。

shared_preload_libraries = 'file_fdw,postgres_fdw'

(3)重新启动PostgreSQL数据库实例。

bin/pg_ctl -D data/ -l logfile restart

(4)创建postgres_fdw扩展。

postgres=# create extension postgres_fdw ;

(5)查看PostgreSQL数据库中已安装的扩展。

postgres=# select * from pg_extension; # 输出信息如下: -[ RECORD 1 ]--+------------- oid | 13566 extname | plpgsql extowner | 10 extnamespace | 11 extrelocatable | f extversion | 1.0 extconfig | extcondition | -[ RECORD 2 ]--+------------- oid | 16628 extname | file_fdw extowner | 10 extnamespace | 2200 extrelocatable | t extversion | 1.0 extconfig | extcondition | -[ RECORD 3 ]--+------------- oid | 16648 extname | postgres_fdw extowner | 10 extnamespace | 2200 extrelocatable | t extversion | 1.0 extconfig | extcondition |

(6)基于postgres_fdw创建外部PostgreSQL数据库服务器对象foreign_server。

postgres=# create server foreign_server foreign data wrapper postgres_fdw options (host '192.168.79.178', port '5432', dbname 'scott'); # 这里的foreign_server是指定的外部服务器名称; # host参数是远程服务器的地址,示例中为192.168.79.178; # port 参数是远程服务器的端口,示例中为5432; # dbname 参数是远程数据库的名称,示例中为scott。

(7)查看当前数据库中移创建的外部服务。

postgres=# \des # 输出的信息如下: List of foreign servers -[ RECORD 1 ]--------+--------------- Name | foreign_server Owner | postgres Foreign-data wrapper | postgres_fdw -[ RECORD 2 ]--------+--------------- Name | service_file Owner | postgres Foreign-data wrapper | file_fdw

(8)创建用户映射。

postgres=# create user mapping for postgres server foreign_server options (user 'postgres', password 'Welcome_1'); # 该语句为本地postgres用户创建了一个 # 访问远程服务器foreign_server时的用户映射, # 也就是使用用户名postgres和密码Welcome_1连接远程服务器。

(9)创建外部表。

postgres=# create foreign table ft_dept (deptno int, dname varchar(10), loc varchar(10)) server foreign_server options (schema_name 'public', table_name 'dept');

(10)现在可以在本地数据库中通过外部表访问对应的远程表。

postgres=# select * from ft_dept; # 输出的信息如下: deptno | dname | loc --------+------------+---------- 10 | ACCOUNTING | NEW YORK 20 | RESEARCH | DALLAS 30 | SALES | CHICAGO 40 | OPERATIONS | BOSTON (4 rows)

注意:为了能够在本地访问远端的PostgreSQL数据库服务器,需要修改远端PostgreSQL数据库服务器的postgresql.conf和pg_hba.conf配置文件,以允许远程登录访问。

最后修改时间:2025-12-14 15:07:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论