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 г.