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

Описание

В этом формате все данные представлены в виде одного объекта JSON, а каждая строка — как отдельное поле этого объекта, аналогично формату JSONEachRow.

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

Базовый пример

Предположим, есть такой JSON:
Чтобы использовать имя объекта в качестве значения столбца, можно воспользоваться специальной настройкой format_json_object_each_row_column_for_object_name. В качестве значения этой настройки указывается имя столбца, которое используется как JSON-ключ для строки в результирующем объекте.

Результат

Допустим, у нас есть таблица test с двумя столбцами:
Давайте выведем это в формате JSONObjectEachRow и используем настройку format_json_object_each_row_column_for_object_name:
Query
Response

Входные данные

Предположим, что мы сохранили результат из предыдущего примера в файл data.json:
Query
Response
Это также работает и для автоматического определения схемы:
Query
Response

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

Query
ClickHouse допускает:
  • Любой порядок пар ключ-значение в объекте.
  • Пропуск некоторых значений.
ClickHouse игнорирует пробелы между элементами и запятые после объектов. Все объекты можно передать в одной строке. Разделять их переводами строк не обязательно.

Обработка пропущенных значений

ClickHouse заменяет пропущенные значения значениями по умолчанию для соответствующих типов данных. Если указано DEFAULT expr, ClickHouse использует разные правила подстановки в зависимости от настройки input_format_defaults_for_omitted_fields. Рассмотрим следующую таблицу:
Query
  • Если input_format_defaults_for_omitted_fields = 0, то значение по умолчанию для x и a равно 0 (это значение по умолчанию для типа данных UInt32).
  • Если input_format_defaults_for_omitted_fields = 1, то значение по умолчанию для x равно 0, а для ax * 2.
При вставке данных с input_format_defaults_for_omitted_fields = 1 ClickHouse потребляет больше вычислительных ресурсов по сравнению со вставкой данных с input_format_defaults_for_omitted_fields = 0.

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

Рассмотрим таблицу UserActivity в качестве примера:
Запрос SELECT * FROM UserActivity FORMAT JSONEachRow возвращает:
В отличие от формата JSON, недопустимые последовательности UTF-8 не подменяются. Значения экранируются так же, как в JSON.
В строки можно выводить любой набор байтов. Используйте формат JSONEachRow, если уверены, что данные в таблице можно представить в формате JSON без потери информации.

Использование вложенных структур

Если у вас есть таблица со столбцами типа Nested, вы можете вставлять JSON-данные с той же структурой. Чтобы включить эту возможность, используйте настройку input_format_import_nested_json. Например, рассмотрим следующую таблицу:
Query
Как видно из описания типа данных Nested, ClickHouse рассматривает каждый элемент вложенной структуры как отдельный столбец (n.s и n.i в нашей таблице). Вы можете вставить данные следующим образом:
Query
Чтобы вставлять данные в виде иерархического объекта JSON, задайте input_format_import_nested_json=1.
При отсутствии этой настройки ClickHouse генерирует исключение.
Query
Response
Query
Response
Query
Response

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

Последнее изменение 12 июня 2026 г.