postgresql Табличная Функция
Позволяет выполнять запросы SELECT
и INSERT
на данных, которые хранятся на удаленном сервере PostgreSQL.
Синтаксис
Аргументы
Аргумент | Описание |
---|---|
host:port | Адрес сервера PostgreSQL. |
database | Имя удаленной базы данных. |
table | Имя удаленной таблицы. |
user | Пользователь PostgreSQL. |
password | Пароль пользователя. |
schema | Неподразумеваемая схема таблицы. Необязательный аргумент. |
on_conflict | Стратегия разрешения конфликтов. Например: ON CONFLICT DO NOTHING . Необязательный аргумент. |
Аргументы также могут быть переданы с использованием именованных коллекций. В этом случае host
и port
должны быть указаны отдельно. Этот подход рекомендуется для производственной среды.
Возвращаемое значение
Объект таблицы с теми же колонками, что и в оригинальной таблице PostgreSQL.
В INSERT
запросе для различения табличной функции postgresql(...)
от имени таблицы с перечислением имен колонок необходимо использовать ключевые слова FUNCTION
или TABLE FUNCTION
. Смотрите примеры ниже.
Подробности реализации
Запросы SELECT
на стороне PostgreSQL выполняются как COPY (SELECT ...) TO STDOUT
внутри транзакции только для чтения с коммитом после каждого запроса SELECT
.
Простые условия WHERE
, такие как =
, !=
, >
, >=
, <
, <=
и IN
, выполняются на сервере PostgreSQL.
Все соединения, агрегации, сортировка, условия IN [ array ]
и ограничение выборки LIMIT
выполняются в ClickHouse только после завершения запроса к PostgreSQL.
Запросы INSERT
на стороне PostgreSQL выполняются как COPY "table_name" (field1, field2, ... fieldN) FROM STDIN
внутри транзакции PostgreSQL с автокоммитом после каждого оператора INSERT
.
Типы массивов PostgreSQL конвертируются в массивы ClickHouse.
Будьте осторожны: в PostgreSQL колонка типа массив (например, Integer[]) может содержать массивы различных размерностей в разных строках, однако в ClickHouse разрешены только многомерные массивы одинаковой размерности во всех строках.
Поддерживает несколько реплик, которые должны быть перечислены через |
. Например:
или
Поддерживает приоритет реплик для источника словаря PostgreSQL. Чем больше число в карте, тем меньше приоритет. Наивысший приоритет — 0
.
Примеры
Таблица в PostgreSQL:
Выборка данных из ClickHouse с использованием простых аргументов:
Или с использованием именованных коллекций:
Вставка:
Использование Неподразумеваемой Схемы:
Связанные темы
Репликация или миграция данных Postgres с PeerDB
В дополнение к табличным функциям вы всегда можете использовать PeerDB от ClickHouse для настройки непрерывного конвейера данных из Postgres в ClickHouse. PeerDB — это инструмент, специально предназначенный для репликации данных из Postgres в ClickHouse с использованием технологии захвата изменений данных (CDC).