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

Описание

CapnProto — это формат бинарных сообщений, похожий на Protocol Buffers и Thrift, но не на JSON или MessagePack. Сообщения CapnProto строго типизированы и не являются самоописываемыми, то есть требуют внешнего описания схемы. Схема применяется на лету и кэшируется для каждого запроса. См. также Format Schema.

Сопоставление типов данных

В таблице ниже показаны поддерживаемые типы данных и их соответствие типам данных ClickHouse в запросах INSERT и SELECT.
  • Целочисленные типы можно преобразовывать друг в друга при вводе и выводе.
  • Для работы с Enum в формате CapnProto используйте настройку format_capn_proto_enum_comparising_mode.
  • Массивы могут быть вложенными и принимать в качестве аргумента значение типа Nullable. Типы Tuple и Map также могут быть вложенными.

Пример использования

Вставка и выборка данных

Вы можете вставить данные CapnProto из файла в таблицу ClickHouse с помощью следующей команды:
При этом schema.capnp выглядит так:
Вы можете выбрать данные из таблицы ClickHouse и сохранить их в файл в формате CapnProto с помощью следующей команды:

Использование автоматически сгенерированной схемы

Если у вас нет внешней схемы CapnProto для ваших данных, вы всё равно можете выполнять вывод и ввод данных в формате CapnProto, используя автоматически сгенерированную схему. Например:
В этом случае ClickHouse автоматически сгенерирует схему CapnProto в соответствии со структурой таблицы с помощью функции structureToCapnProtoSchema и будет использовать эту схему для сериализации данных в формате CapnProto. Вы также можете читать файл CapnProto, используя автоматически сгенерированную схему (в этом случае файл должен быть создан с использованием той же схемы):

Настройки формата

Параметр format_capn_proto_use_autogenerated_schema включен по умолчанию и используется, если format_schema не задан. Вы также можете сохранить автоматически сгенерированную схему в файл при вводе/выводе с помощью параметра output_format_schema. Например:
В этом случае автоматически сгенерированная схема CapnProto будет сохранена в файле path/to/schema/schema.capnp.
Последнее изменение 2 июля 2026 г.