Сначала установите расширение:
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
предпочтительнее, чем создание определений сторонних таблиц вручную.