Как добавить удаленную базу данных Postgresql (связанный сервер) в базу данных Postgresql? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть postgresql db дома и один в облаке.Я хотел бы добавить свою домашнюю базу данных в облачную базу данных, чтобы я мог легко выполнять запросы между базами данных.Как это может быть сделано?Без использования dblink http://www.postgresonline.com/journal/archives/44-Using-DbLink-to-access-other-PostgreSQL-Databases-and-Servers.html

Мой домашний БД будет использовать провайдера динамического ip (можно ли добавить динамический IP-адрес, такой как myhomedb.dedyn.io, в настройки postgresql?)

IВсе это констатирую на случай возникновения каких-либо проблем.Моя домашняя база данных будет использоваться только для обновления огромного количества данных, но не является критически важной (как мы знаем, облачные вычисления недешевы).

Заранее спасибо.

1 Ответ

0 голосов
/ 20 марта 2019

Похоже, postgres-fdw - это путь: https://www.postgresql.org/docs/current/postgres-fdw.html

Сначала установите расширение:

CREATE EXTENSION postgres_fdw;

Затем создайте сторонний сервер, используя CREATE SERVER.В этом примере мы хотим подключиться к серверу PostgreSQL на хосте 192.83.123.89, прослушивающему порт 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 предпочтительнее, чем создание определений сторонних таблиц вручную.

...