PostgreSQL 外部数据包装器,即 PostgreSQL Foreign Data Wrappers,是现实数据库使用场景中一个非常实用的功能,PostgreSQL 的 FDW 类似于 Oracle 的 dblink,使用其可以将本地数据库与外部数据库建立连接,从而可以像操作本地数据一样来操作外部数据。

postgrs_fdw是PostgreSQL 外部数据包装器中的一种,可用于访问储存在外部postgresql数据库的数据。

使用步骤如下:

1、使用 CREATE EXTENSION 来安装 postgres_fdw扩展。

2、使用 CREATE SERVER 创建一个外部服务器对象,它用来表示你想连接的每一个远程数据库。指定除了 user 和 password 之外的连接信息作为该服务器对象的选项。

3、使用 CREATE USER MAPPING 创建一个用户映射,每一个用户映射都代表你想允许一个数据库用户访问一个外部服务器。指定远程用户名和口令作为用户映射的 user 和 password 选项。

4、为每一个你想访问的远程表使用 CREATE FOREIGN TABLE 或者 IMPORT FOREIGN SCHEMA 创建一个外部表。外部表的列必须匹配被引用的远程表。但是,如果你在外部表对象的选项中指定了正确的远程名称,你可以使用不同于远程表的表名和列名。

示例如下

--1、安装 postgres_fdw扩展
create extension postgres_fdw;

--2、通过fdw创建外部服务器对象
CREATE SERVER foreign_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'test', host '127.0.0.1', port '5432');

--3、创建一个用户映射
CREATE USER MAPPING for postgres SERVER foreign_server OPTIONS (user 'postgres', password 'a1!');
select * from pg_foreign_server;

--4、将数据库A模式中的所有表在数据库B中创建外联表
import foreign schema public from server foreign_server into public

--5、查询外部数据
SELECT businessdate,count(1) FROM DATA
group by businessdate
order by businessdate desc