PostgreSQL使用 postgres_fdw 进行跨库操作
Contents
说明
该 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] 官网