Skip to main content
Skip to main content

postgresql

Позволяет выполнять запросы SELECT и INSERT над таблицами удаленной БД PostgreSQL.

Синтаксис

Аргументы

  • host:port — адрес сервера PostgreSQL.
  • database — имя базы данных на удалённом сервере.
  • table — имя таблицы на удалённом сервере.
  • user — пользователь PostgreSQL.
  • password — пароль пользователя.
  • schema — имя схемы, если не используется схема по умолчанию. Необязательный аргумент.

Возвращаемое значение

Таблица с теми же столбцами, что и в исходной таблице 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 массивы, созданные как type_name[], являются многомерными и могут содержать в себе разное количество измерений в разных строках одной таблицы. Внутри ClickHouse допустипы только многомерные массивы с одинаковым кол-вом измерений во всех строках таблицы.

Поддерживает несколько реплик, которые должны быть перечислены через |. Например:

или

При использовании словаря PostgreSQL поддерживается приоритет реплик. Чем больше номер реплики, тем ниже ее приоритет. Наивысший приоритет у реплики с номером 0.

Примеры

Таблица в PostgreSQL:

Получение данных в ClickHouse:

Вставка данных:

Using Non-default Schema:

См. также