Pular para o conteúdo principal

Descrição

Neste formato, todos os dados são representados como um único objeto JSON, com cada linha representada como um campo separado desse objeto, de maneira semelhante ao formato JSONEachRow.

Exemplo de uso

Exemplo básico

Dado o seguinte JSON:
Para usar um nome de objeto como valor de uma coluna, você pode usar a configuração especial format_json_object_each_row_column_for_object_name. O valor dessa configuração é definido como o nome de uma coluna, usada como chave JSON de uma linha no objeto resultante.

Saída

Digamos que temos a tabela test com duas colunas:
Vamos gerar a saída no formato JSONObjectEachRow e usar a configuração format_json_object_each_row_column_for_object_name:
Query
Response

Entrada

Digamos que armazenamos a saída do exemplo anterior em um arquivo chamado data.json:
Query
Response
Também funciona para inferência de esquema:
Query
Response

Inserção de dados

Query
O ClickHouse permite:
  • Qualquer ordem dos pares chave-valor no objeto.
  • Omitir alguns valores.
O ClickHouse ignora os espaços entre os elementos e as vírgulas após os objetos. Você pode passar todos os objetos em uma única linha. Não é necessário separá-los com quebras de linha.

Processamento de valores omitidos

O ClickHouse substitui os valores omitidos pelos valores padrão dos tipos de dados correspondentes. Se DEFAULT expr for especificado, o ClickHouse usará regras de substituição diferentes, dependendo da configuração input_format_defaults_for_omitted_fields. Considere a tabela a seguir:
Query
  • Se input_format_defaults_for_omitted_fields = 0, o valor padrão de x e a é 0 (o valor padrão do tipo de dado UInt32).
  • Se input_format_defaults_for_omitted_fields = 1, o valor padrão de x é 0, mas o valor padrão de a é x * 2.
Ao inserir dados com input_format_defaults_for_omitted_fields = 1, o ClickHouse consome mais recursos computacionais do que na inserção com input_format_defaults_for_omitted_fields = 0.

Selecionando dados

Considere a tabela UserActivity como um exemplo:
A consulta SELECT * FROM UserActivity FORMAT JSONEachRow retorna:
Ao contrário do formato JSON, não há substituição de sequências UTF-8 inválidas. Os valores são escapados da mesma forma que no JSON.
Qualquer conjunto de bytes pode ser emitido nas strings. Use o formato JSONEachRow se tiver certeza de que os dados da tabela podem ser formatados como JSON sem perda de informação.

Uso de estruturas aninhadas

Se você tiver uma tabela com colunas do tipo de dado Nested, poderá inserir dados JSON com a mesma estrutura. Ative esse recurso com a configuração input_format_import_nested_json. Por exemplo, considere a seguinte tabela:
Query
Como você pode ver na descrição do tipo de dado Nested, o ClickHouse trata cada componente da estrutura aninhada como uma coluna separada (n.s e n.i na nossa tabela). Você pode inserir os dados da seguinte forma:
Query
Para inserir dados como um objeto JSON hierárquico, defina input_format_import_nested_json=1.
Sem essa configuração, ClickHouse lança uma exceção.
Query
Response
Query
Response
Query
Response

Configurações de formato

Última modificação em 2 de julho de 2026