Найти в Дзене
programmer's notes (python and more)

Реляционные базы данных и язык SQL. Внешние таблицы (foreign table). Начало

Доброго здоровья читателям моего канала programmer's notes. Поддерживаем мой канал.

Создание внешний таблиц на сервере PostgreSQL

Внешние таблицы (foreign tables) в PostgreSQL является гибким инструментом доступа к данным вне объектов текущей базы данных. Это могут быть другие базы того-же сервера PostgreSQL и ли других серверов или совсем не табличные данные, например находящиеся вне сервера.

Для работы с внешними таблицами следует начать с установки расширения postgres_fdw, которое и позволяет работать с данными из других баз данных или других структур, например обычных файлов. Для это надо выполнить команду

create extension postgres_fdw;

Если команда выполняется с ошибкой, то, скорее всего, не установлена стандартная компонента postgres-contrib. После установки команда должна выполниться. Следующий шаг это создание внешнего сервера

create server fs1 foreign data wrapper postgres_fdw
option (host '10.10.235.14', dbname 'words');

Создав сервер, мы присвоили ему имя fs1. При этом мы указали адрес сервер и имя базы данных. В данном случае мы предполагаем, что по указанному адресу располагается сервер PostgreSQL, который слушает внешние запросы через стандартный порт. Следующий шаг это создать учётную запись для доступа к серверу. Например, так

create user mapping for postgres server fs1
options (user 'postgres', password '123');

Теперь всё готово для создания внешней таблицы.

create foreign table tbl1(
id int4,
"group" bpchar(30),
pops int4
)
server fs1 options (table_name 'groups');

Замечание
group взято в кавычки по той простой причине, это является ключевым словом языка SQL. Двойные кавычки указывают, что это именно объект, что это имя объекта, а не элемент команды.

Данная команда создала внешнюю таблицу tbl1 с указанием столбцов и их типов, так чтобы это соответствовало удалённой таблицы. Теперь можно получать данные из удалённой таблицы просто командой select

select * from tbl1;

Результат выполнения команды будет таким же, как если бы таблица находилась в текущей базе данных. Интересно, что можно не только получать данные из удалённой таблицы, но и обновлять её обычными командами SQL.

Подборка материалов по реляционным базам данных:

dzen.ru

Пока всё!

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Иностранные таблицы? Нет, это не наш путь... ;)
Иностранные таблицы? Нет, это не наш путь... ;)