Перейти к основному содержанию
clickhouse-cpp — официальная клиентская библиотека ClickHouse для C++, предоставляющая быстрый и типобезопасный интерфейс к ClickHouse через его native-бинарный протокол. Инструкции по сборке, примеры использования и дополнительная документация доступны в GitHub-репозитории проекта: https://github.com/ClickHouse/clickhouse-cpp.
Библиотека находится в активной разработке. Хотя она уже поддерживает основную функциональность ClickHouse, некоторые возможности и типы данных могут быть ещё не полностью реализованы или не поддерживаться.Ваши отзывы очень важны и помогают определять приоритеты новых возможностей и улучшений. Если вы столкнётесь с ограничениями, отсутствующей функциональностью или неожиданным поведением, пожалуйста, поделитесь своими наблюдениями или запросами на новые возможности через трекер задач: https://github.com/ClickHouse/clickhouse-cpp/issues

Подключение библиотеки к вашему проекту

Самый простой способ подключить библиотеку к вашему проекту — использовать модуль CMake FetchContent. Такой подход позволяет закрепить точную версию библиотеки и собирать её в рамках стандартного рабочего процесса CMake.
Параметр WITH_OPENSSL включает поддержку TLS в библиотеке и обязателен при подключении к ClickHouse Cloud или другим развертываниям ClickHouse с поддержкой SSL. Хотя для соединений без TLS его можно не указывать, в большинстве случаев рекомендуется его включить. Для сборки с поддержкой SSL должны быть установлены пакеты разработки OpenSSL. Установите libssl-dev в Debian, Ubuntu или их производных; openssl-devel в Fedora, Red Hat; или openssl в macOS через Homebrew. После установки зависимости свяжите целевой объект сборки с экспортируемой библиотечной целью:

Примеры

Настройка объекта клиента

Создайте экземпляр Client, чтобы установить соединение с ClickHouse. В следующем примере показано подключение к локальному экземпляру ClickHouse, где пароль не требуется и SSL не включен.
В более сложных сценариях требуется дополнительная настройка. В следующем примере показано, как подключиться к экземпляру ClickHouse Cloud с использованием нескольких дополнительных параметров:

Создание таблиц и выполнение запросов без возврата данных

Чтобы выполнить запрос, который не возвращает данных, например для создания таблиц, используйте метод Execute. Тот же подход применяется и к другим командам, таким как ALTER TABLE, DROP и т. д.

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

Чтобы вставить данные в таблицу, создайте Block и заполните его объектами столбцов, соответствующими схеме таблицы. Данные добавляются столбец за столбцом, а затем вставляются одной операцией с помощью метода Insert, оптимизированного для эффективной пакетной записи.

Выборка данных

Чтобы выполнить запрос, возвращающий данные, используйте метод Select и передайте функцию обратного вызова для обработки результата. Результаты запроса передаются в виде объектов Block, отражающих нативное для ClickHouse столбцовое представление данных.

Поддерживаемые типы данных

  • UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64
  • UInt128, Int128
  • Decimal32, Decimal64, Decimal128
  • Float32, Float64
  • Date
  • DateTime, DateTime64
  • DateTime([timezone]), DateTime64(N, [timezone])
  • UUID
  • Enum8, Enum16
  • String
  • FixedString(N)
  • LowCardinality(String) и LowCardinality(FixedString(N))
  • Nullable(T)
  • Array(T)
  • Tuple
  • Map
  • IPv4, IPv6
  • Point, Ring, Polygon, MultiPolygon
Последнее изменение 10 июня 2026 г.