查询存储在不同服务器

时间:2018-03-29 10:28:35

标签: postgresql postgresql-9.2 postgres-fdw

我有两个 POSTGRES 数据库存储在不同的服务器中。

“Firstdb”版本 9.2 ,它存储在LAN服务器端口 5432 中。

“Seconddb” 版本 10 ,并将其作为localhost存储到我的电脑,端口 5432

我可以通过 pgAdmin4 版本 2.0 访问这两个版本。

我想在这两个数据库之间运行查询来比较数据。

关于如何做到这一点的任何想法?

谢谢大家的时间。

1 个答案:

答案 0 :(得分:1)

对于运行联合查询,我大部分时间都使用postgres_fdw,这会在源数据库中创建一个外表。相当方便,但在处理连接时有其警告。

一个例子:

CREATE SERVER my_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'target.host.com', port '5432', dbname 'targetdb');
CREATE USER MAPPING FOR postgres SERVER my_server OPTIONS (user 'postgres');

CREATE FOREIGN TABLE my_foreign_table (
  id INT,
  desc TEXT
)
SERVER my_server OPTIONS (schema_name 'public', table_name 'target_table');
根据评论

编辑

请记住,源数据库与任何其他应用程序一样,需要访问目标数据库,并且必须在pg_hba.conf处描述:

host yourdb youruser 0.0.0.0 md5

另一种方法是使用dblink,它不会创建外部表,但可以直接向目标数据库发出查询并检索结果集,就像它是本地的一样。