说明

postgres_fdw 模块提供了 远程-数据 包装器 postgres_fdw,它能够用于访问一些保存在外部 PostgreSQL 服务器的数据。

该模块提供的功能很大程度上与以前的dblink模块重叠。但是postgres_fdw 提供了更加透明和符合标准的语法来访问远程表,并且能够在某些情况下有更好的性能。

安装extension

cd contrib/postgres_fdw make install

安装到数据库

test=# CREATE EXTENSION postgres_fdw;
CREATE EXTENSION
test=# 

检查是否安装成功

test=# \dx postgres_fdw;
                             List of installed extensions
     Name     | Version | Schema |                    Description                    
--------------+---------+--------+----------------------------------------------------
 postgres_fdw | 1.0     | public | foreign-data wrapper for remote PostgreSQL servers
(1 row)

test=# 

创建并查看一个远程服务器

test=# \dx postgres_fdw;
                             List of installed extensions
     Name     | Version | Schema |                    Description                    
--------------+---------+--------+----------------------------------------------------
 postgres_fdw | 1.0     | public | foreign-data wrapper for remote PostgreSQL servers
(1 row)

test=# CREATE SERVER postgres_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '10.0.0.10', port '5432', dbname 'test');
CREATE SERVER
test=# \des;
              List of foreign servers
      Name       |  Owner   | Foreign-data wrapper
-----------------+----------+----------------------
postgres_server | postgres | postgres_fdw
(1 row)

test=# 

创建一个远程映射用户

 CREATE USER MAPPING FOR PUBLIC SERVER postgres_server OPTIONS (user 'postgres', password 'yang');

user,password 是远程数据库上的用户名和密码

创建一个远程映射表

test=# CREATE FOREIGN TABLE tcost_foreign (path integer, cost numeric) SERVER postgres_server OPTIONS (schema_name 'public', table_name 'tcost');
CREATE FOREIGN TABLE
test=# 

操作

像它在本地表一样操作就可以了。

资料: [1] 官网