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

postgresql Table Function

Позволяет выполнять 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).