Таблицы запросов с нескольких серверов с postgreSQL - PullRequest
2 голосов
/ 05 февраля 2020

У меня есть несколько баз данных на разных PostgreSQL серверах с таблицами с одинаковыми столбцами в нем (installs_1, installs_2 и installs_3) installs(country varchar, date datetime,paid boolean, installs int) Я хочу написать функцию, которую пользователь мог бы использовать для запроса по всем этим базам данных сразу, как я могу это сделать? мой запрос: select country,count(*) from t1,t2

1 Ответ

2 голосов
/ 05 февраля 2020

A 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

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...