#postgresql #postgresql-10
#postgresql #postgresql-10
Вопрос:
У меня есть база данных postgresql дома и одна в облаке. Я хотел бы добавить свою домашнюю базу данных в облачную базу данных, чтобы я мог легко выполнять запросы между базами данных. Как это можно сделать? Без использования dblink
http://www.postgresonline.com/journal/archives/44-Using-DbLink-to-access-other-PostgreSQL-Databases-and-Servers.html
Моя домашняя база данных будет использовать динамического поставщика ip (могу ли я добавить динамический IP-адрес, такой как myhomedb.dedyn.io в настройки postgresql?)
Я заявляю все это на случай возникновения каких-либо проблем. Моя домашняя база данных будет использоваться только для обновления огромного объема данных, но не является критически важной (как мы знаем, облачные вычисления недешевы).
Заранее спасибо.
Ответ №1:
Похоже, 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
предпочтительнее, чем
создание определений внешних таблиц вручную.