Перейти к основному содержанию
ClickHouse поддерживает несколько двоичных форматов, которые обеспечивают более высокую производительность и более эффективное использование пространства. Двоичные форматы также не создают проблем с кодировкой символов, поскольку данные сохраняются в двоичном виде. Для демонстрации мы будем использовать таблицу some_data и данные; при желании вы можете воспроизвести это на своём экземпляре ClickHouse.

Экспорт в собственном формате ClickHouse Native

Наиболее эффективный формат для экспорта и импорта данных между узлами ClickHouse — Native. Экспорт выполняется с помощью оператора INTO OUTFILE:
Это создаст файл data.clickhouse в формате Native.

Импорт из формата Native

Чтобы импортировать данные, можно использовать file() для небольших файлов или в ознакомительных целях:
При использовании функции file() в ClickHouse Cloud команды нужно запускать в clickhouse client на той машине, где находится файл. Ещё один вариант — использовать clickhouse-local для локальной работы с файлами.
В рабочей среде мы используем FROM INFILE для импорта данных:

Сжатие в формате Native

При экспорте данных в формат Native (как и в большинство других форматов) также можно включить сжатие с помощью конструкции COMPRESSION:
Мы использовали для экспорта сжатие LZ4. Его нужно будет указать и при импорте данных:

Экспорт в RowBinary

Ещё один поддерживаемый бинарный формат — RowBinary, который позволяет импортировать и экспортировать данные в виде строк в бинарном представлении:
В результате будет создан файл data.binary в бинарном формате строк.

Просмотр файлов RowBinary

Для этого формата автоматическое определение схемы не поддерживается, поэтому перед загрузкой данных для их просмотра нужно явно задать схему:
Рекомендуем использовать RowBinaryWithNames, который также добавляет строку заголовка со списком столбцов. RowBinaryWithNamesAndTypes также добавляет дополнительную строку заголовка с типами столбцов.

Импорт из файлов RowBinary

Чтобы загрузить данные из файла RowBinary, можно использовать конструкцию FROM INFILE:

Импорт одного двоичного значения с помощью RawBLOB

Предположим, что нужно прочитать весь двоичный файл и сохранить его в поле таблицы. В таком случае можно использовать формат RawBLOB. Этот формат можно использовать напрямую только с таблицей, содержащей один столбец:
Сохраним файл с изображением в таблицу images:
Мы можем проверить длину поля data — она будет равна исходному размеру файла:

Экспорт данных в формате RawBLOB

Этот формат также можно использовать для экспорта данных с помощью оператора INTO OUTFILE:
Обратите внимание, что нам пришлось использовать LIMIT 1, потому что экспорт более чем одного значения приведет к повреждению файла.

MessagePack

ClickHouse поддерживает импорт и экспорт в формате MessagePack с использованием MsgPack. Чтобы экспортировать данные в формате MessagePack:
Чтобы импортировать данные из файла MessagePack:

Protocol Buffers

Чтобы работать с Protocol Buffers, сначала нужно определить файл схемы:
Путь к этому файлу схемы (schema.proto в нашем случае) указывается в параметре format_schema в разделе Settings формата Protobuf:
Это сохраняет данные в файл proto.bin. ClickHouse также поддерживает импорт данных Protobuf и вложенных сообщений. Для работы с одним сообщением Protocol Buffer можно использовать ProtobufSingle (в этом случае разделители длины будут опущены).

Cap’n Proto

ClickHouse также поддерживает ещё один популярный бинарный формат сериализации — Cap’n Proto. Как и в случае с форматом Protobuf, в нашем примере нужно определить файл схемы (schema.capnp):
Теперь мы можем импортировать и экспортировать данные в формате CapnProto по этой схеме:
Обратите внимание, что нам пришлось привести столбец Date к типу UInt32, чтобы обеспечить соответствие типов.

Другие форматы

ClickHouse поддерживает множество форматов — текстовых и двоичных — для самых разных сценариев и платформ. Подробнее о форматах и способах работы с ними читайте в следующих статьях: Также обратите внимание на clickhouse-local — переносимый полнофункциональный инструмент для работы с локальными и удалёнными файлами без запуска сервера ClickHouse.
Последнее изменение 19 июня 2026 г.