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

Форматы ввода и вывода данных

ClickHouse поддерживает большинство известных текстовых и бинарных форматов данных. Это позволяет легко интегрировать его практически в любой конвейер обработки данных и использовать преимущества ClickHouse.

Форматы ввода

Форматы ввода используются для:
  • Разбора данных, передаваемых в операторы INSERT
  • Выполнения запросов SELECT к таблицам с файловой поддержкой, таким как File, URL или HDFS
  • Чтения словарей
Выбор подходящего формата ввода имеет решающее значение для эффективной ингестии данных в ClickHouse. При наличии более 70 поддерживаемых форматов выбор наиболее производительного варианта может существенно повлиять на скорость вставки, использование CPU и памяти, а также общую эффективность системы. Чтобы упростить этот выбор, мы провели бенчмарк производительности ингестии для разных форматов и выделили ключевые выводы:
  • Формат Native — самый эффективный формат ввода, он обеспечивает лучшее сжатие, минимальное потребление ресурсов и минимальные накладные расходы на обработку на стороне сервера.
  • Сжатие крайне важно — LZ4 уменьшает размер данных при минимальных затратах CPU, тогда как ZSTD обеспечивает более высокую степень сжатия ценой дополнительной нагрузки на CPU.
  • Предварительная сортировка влияет умеренно, поскольку ClickHouse и без того сортирует эффективно.
  • Формирование батчей значительно повышает эффективность — более крупные батчи уменьшают накладные расходы на вставку и повышают пропускную способность.
Чтобы подробнее ознакомиться с результатами и рекомендуемыми практиками, прочитайте полный анализ бенчмарка. Полные результаты тестов доступны на онлайн-панели мониторинга FastFormats.

Форматы вывода

Поддерживаемые форматы вывода используются для:
  • Представления результатов запроса SELECT
  • Выполнения операций INSERT в таблицы с файловой поддержкой

Обзор форматов

Поддерживаемые форматы: Некоторыми параметрами обработки форматов можно управлять с помощью настроек ClickHouse. Подробнее см. раздел Настройки.

Схема формата

Имя файла, содержащего схему формата, задаётся настройкой format_schema. Эту настройку необходимо указать при использовании форматов Cap'n Proto и Protobuf. Схема формата представляет собой сочетание имени файла и имени типа сообщения в этом файле, разделённых двоеточием, например, schemafile.proto:MessageType. Если файл имеет стандартное для данного формата расширение (например, .proto для Protobuf), его можно опустить, и в этом случае схема формата будет выглядеть так: schemafile:MessageType. Если вы вводите или выводите данные через клиент в интерактивном режиме, имя файла, указанное в схеме формата, может содержать абсолютный путь или путь относительно текущего каталога на клиенте. Если вы используете клиент в пакетном режиме, путь к схеме из соображений безопасности должен быть относительным. Если вы вводите или выводите данные через HTTP-интерфейс, имя файла, указанное в схеме формата, должно находиться в каталоге, указанном в format_schema_path в конфигурации сервера.

Пропуск ошибок

Некоторые форматы, такие как CSV, TabSeparated, TSKV, JSONEachRow, Template, CustomSeparated и Protobuf, могут пропускать некорректную строку, если возникает ошибка разбора, и продолжать разбор с начала следующей строки. См. настройки input_format_allow_errors_num и input_format_allow_errors_ratio. Ограничения:
  • При ошибке разбора JSONEachRow пропускает все данные до символа новой строки (или EOF), поэтому для корректного подсчета ошибок строки должны разделяться символом \n.
  • Template и CustomSeparated используют разделитель после последнего столбца и разделитель между строками, чтобы находить начало следующей строки, поэтому пропуск ошибок работает только в том случае, если хотя бы один из них не пуст.
Последнее изменение 10 июня 2026 г.