如何将远程Postgresql数据库(链接服务器)添加到Postgresql数据库?

问题描述 投票:0回答:1

我在家里有一个postgresql数据库,在云上有一个。我想将我的家庭数据库添加到云数据库,以便我可以在数据库之间轻松查询。如何才能做到这一点?不使用dblink http://www.postgresonline.com/journal/archives/44-Using-DbLink-to-access-other-PostgreSQL-Databases-and-Servers.html

我的家庭数据库将使用动态IP提供程序(我可以添加动态IP地址,如myhomedb.dedyn.io到postgresql设置?)

如果有任何问题我会说明这一切。我的家庭数据库将仅用于更新大量数据,但不是关键任务(因为我们知道云计算并不便宜)。

提前致谢。

postgresql postgresql-10
1个回答
0
投票

看起来像postgres-fdw是要走的路:https://www.postgresql.org/docs/current/postgres-fdw.html

首先安装扩展:

CREATE EXTENSION postgres_fdw;

然后使用CREATE SERVER创建一个外部服务器。在这个例子中,我们希望连接到主机192.83.123.89上的PostgreSQL服务器,监听端口5432。建立连接的数据库在远程服务器上命名为foreign_db

CREATE SERVER foreign_server
        FOREIGN DATA WRAPPER postgres_fdw
        OPTIONS (host '192.83.123.89', port '5432', dbname 'foreign_db');

还需要使用CREATE USER MAPPING定义的用户映射来标识将在远程服务器上使用的角色:

CREATE USER MAPPING FOR local_user
        SERVER foreign_server
        OPTIONS (user 'foreign_user', password 'password');

现在可以使用CREATE FOREIGN TABLE创建一个外表。在此示例中,我们希望访问远程服务器上名为some_schema.some_table的表。它的本地名称是foreign_table

CREATE FOREIGN TABLE foreign_table (
        id integer NOT NULL,
        data text
)
        SERVER foreign_server
        OPTIONS (schema_name 'some_schema', table_name 'some_table');

CREATE FOREIGN TABLE中声明的列的数据类型和其他属性与实际的远程表匹配是至关重要的。列名也必须匹配,除非您将column_name选项附加到各个列以显示它们在远程表中的命名方式。在许多情况下,使用IMPORT FOREIGN SCHEMA比手动构造外部表定义更可取。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.