Перейти к основному содержимому
Перейти к основному содержимому

Функция таблицы 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 внутри транзакции PostgreSQL только для чтения с коммитом после каждого запроса 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).