【赵渝强老师】使用postgre

2026-02-06 23:03:12 2502

通过使用file_fdw扩展使得PostgreSQL能够访问外部文件系统中的数据文件,同样通过使用postgres_fdw扩展可以使得PostgreSQL能够访问外部远端的PostgreSQL数据库中的数据。视频讲解如下:

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

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

代码语言:powershell复制cd postgresql-15.3/contrib/postgres_fdw/

make

make install

# 编译完成后,会在当前目录下生成postgres_fdw.so文件。(2)修改postgresql.conf文件中的shared_preload_libraries参数。

代码语言:powershell复制shared_preload_libraries = 'file_fdw,postgres_fdw'(3)重新启动PostgreSQL数据库实例。

代码语言:powershell复制bin/pg_ctl -D data/ -l logfile restart(4)创建postgres_fdw扩展。

代码语言:sql复制postgres=# create extension postgres_fdw ;(5)查看PostgreSQL数据库中已安装的扩展。

代码语言:sql复制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。

代码语言:sql复制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)查看当前数据库中移创建的外部服务。

代码语言:sql复制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)创建用户映射。

代码语言:sql复制postgres=# create user mapping for postgres

server foreign_server

options (user 'postgres', password 'Welcome_1');

# 该语句为本地postgres用户创建了一个

# 访问远程服务器foreign_server时的用户映射,

# 也就是使用用户名postgres和密码Welcome_1连接远程服务器。(9)创建外部表。

代码语言:sql复制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)现在可以在本地数据库中通过外部表访问对应的远程表。

代码语言:sql复制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配置文件,以允许远程登录访问。