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

Функция таблицы 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).