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

时间:2019-03-19 21:51:19

标签: postgresql postgresql-10

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

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

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

谢谢。

1 个答案:

答案 0 :(得分: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比   手动构造外部表定义。