Перейти к основному содержанию
Позволяет выполнять запросы 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 внутри PostgreSQL-транзакции в режиме только для чтения с фиксацией после каждого SELECT-запроса. Простые секции WHERE, такие как =, !=, >, >=, <, <= и IN, выполняются на сервере PostgreSQL. Все JOIN, агрегации, сортировка, условия IN [ array ] и ограничение сэмплирования LIMIT выполняются в ClickHouse только после завершения запроса к PostgreSQL. INSERT-запросы на стороне PostgreSQL выполняются как COPY "table_name" (field1, field2, ... fieldN) FROM STDIN внутри PostgreSQL-транзакции с автофиксацией после каждого оператора INSERT. Типы Array в PostgreSQL преобразуются в массивы ClickHouse.
Будьте внимательны: в PostgreSQL столбец с типом массива, например Integer[], может содержать массивы разной размерности в разных строках, но в ClickHouse допускаются только многомерные массивы одинаковой размерности во всех строках.
Поддерживается несколько реплик, которые должны быть перечислены через |. Например:
или
Поддерживает приоритеты реплик для источника словаря PostgreSQL. Чем больше число в карте, тем ниже приоритет. Наивысший приоритет — 0.

Примеры

Таблица в PostgreSQL:
Выбор данных из ClickHouse с помощью обычных аргументов:
Или с помощью именованных коллекций:
Вставка:
Использование нестандартной схемы:

Репликация или миграция данных Postgres с помощью PeerDB

Помимо табличных функций, вы также можете использовать PeerDB от ClickHouse, чтобы настроить непрерывный конвейер передачи данных из Postgres в ClickHouse. PeerDB — это инструмент, специально разработанный для репликации данных из Postgres в ClickHouse с использованием CDC (фиксации изменений данных).
Последнее изменение 25 июня 2026 г.