我在家有一个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吗?)
我正在说明所有这一切,以防出现任何问题。我的家庭数据库将仅用于更新大量数据,但不是关键任务(因为我们知道云计算并不便宜)。
谢谢。
答案 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
比 手动构造外部表定义。