使用 postgreSQL 从多个服务器查询表



我在不同的PostgreSQL服务器上有几个数据库,其中的表具有相同的列 (installs_1、installs_2和installs_3(installs(country varchar, date datetime,paid boolean, installs int) 我想编写一个函数,用户可以使用它一次查询所有这些数据库,我该怎么做? 我的查询是:select country,count(*) from t1,t2

提供此功能的PostgreSQL扩展是postgres_fdw。下面是如何设置它的示例:

首先创建扩展:

CREATE EXTENSION postgres_fdw

之后,创建一个指向外部 postgres 服务器的服务器

CREATE SERVER remote_postgres 
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'mydb', host 'remoteserver', port '5432');

然后是用户映射,以便当前数据库中的用户可以访问外部数据库:

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

最后,创建一个外表来链接两个表

CREATE FOREIGN TABLE foreign_table_test
(id INT, description TEXT)
SERVER remote_postgres
OPTIONS (schema_name 'public', table_name 'table_test');

创建表后,您可以像查询普通/本地表一样查询它:

SELECT * FROM foreign_table_test

延伸阅读:

  • closer lookpostgres_fdw
  • postgres_fdwdocumentation examples

相关内容

  • 没有找到相关文章

最新更新