Saltar al contenido principal

Descripción

En este formato, todos los datos se representan como un único objeto JSON, y cada fila se representa como un campo independiente de ese objeto, de forma similar al formato JSONEachRow.

Ejemplo de uso

Ejemplo básico

Dado el siguiente JSON:
Para usar el nombre de un objeto como valor de una columna, puede utilizar la SETTING especial format_json_object_each_row_column_for_object_name. El valor de esta SETTING se establece en el nombre de una columna, que se utiliza como clave JSON para una fila en el objeto resultante.

Resultado

Supongamos que tenemos la tabla test con dos columnas:
Mostremos la salida en el formato JSONObjectEachRow y usemos la SETTING format_json_object_each_row_column_for_object_name:
Query
Response

Entrada

Supongamos que hemos guardado la salida del ejemplo anterior en un archivo llamado data.json:
Query
Response
También funciona para la inferencia de esquema:
Query
Response

Insertar datos

Query
ClickHouse permite:
  • Cualquier orden de los pares clave-valor dentro del objeto.
  • Omitir algunos valores.
ClickHouse ignora los espacios entre los elementos y las comas después de los objetos. Puede pasar todos los objetos en una sola línea. No es necesario separarlos con saltos de línea.

Procesamiento de los valores omitidos

ClickHouse sustituye los valores omitidos por los valores predeterminados de los tipos de datos correspondientes. Si se especifica DEFAULT expr, ClickHouse aplica reglas de sustitución diferentes según la SETTING input_format_defaults_for_omitted_fields. Considere la siguiente tabla:
Query
  • Si input_format_defaults_for_omitted_fields = 0, el valor predeterminado de x y a es 0 (el valor predeterminado del tipo de dato UInt32).
  • Si input_format_defaults_for_omitted_fields = 1, el valor predeterminado de x es 0, pero el valor predeterminado de a es x * 2.
Al insertar datos con input_format_defaults_for_omitted_fields = 1, ClickHouse consume más recursos de cómputo que con la inserción usando input_format_defaults_for_omitted_fields = 0.

Selección de datos

Considere la tabla UserActivity como ejemplo:
La consulta SELECT * FROM UserActivity FORMAT JSONEachRow devuelve:
A diferencia del formato JSON, no se sustituyen las secuencias UTF-8 no válidas. Los valores se escapan del mismo modo que en JSON.
En las cadenas se puede generar cualquier secuencia de bytes. Utilice el formato JSONEachRow si está seguro de que los datos de la tabla pueden representarse como JSON sin perder información.

Uso de estructuras anidadas

Si tiene una tabla con columnas del tipo de dato Nested, puede insertar datos JSON con la misma estructura. Habilite esta función con la SETTING input_format_import_nested_json. Por ejemplo, considere la siguiente tabla:
Query
Como puede ver en la descripción del tipo de dato Nested, ClickHouse trata cada componente de la estructura anidada como una columna independiente (n.s y n.i para nuestra tabla). Puede insertar datos de la siguiente manera:
Query
Para insertar datos como un objeto JSON jerárquico, establezca input_format_import_nested_json=1.
Sin esta SETTING, ClickHouse genera una excepción.
Query
Response
Query
Response
Query
Response

Configuración de formato

Última modificación el 2 de julio de 2026