Passer au contenu principal

Description

Dans ce format, toutes les données sont représentées dans un unique objet JSON, chaque ligne correspondant à un champ distinct de cet objet, à l’instar du format JSONEachRow.

Exemple d’utilisation

Exemple simple

Soit le JSON suivant :
Pour utiliser un nom d’objet comme valeur de colonne, vous pouvez utiliser le paramètre spécial format_json_object_each_row_column_for_object_name. La valeur de ce paramètre correspond au nom d’une colonne, utilisée comme clé JSON pour une ligne dans l’objet résultant.

Sortie

Supposons que nous ayons la table test avec deux colonnes :
Affichons-le au format JSONObjectEachRow et utilisons le paramètre format_json_object_each_row_column_for_object_name :
Query
Response

Entrée

Supposons que nous ayons enregistré le résultat de l’exemple précédent dans un fichier nommé data.json :
Query
Response
Cela fonctionne aussi pour l’inférence de schéma :
Query
Response

Insertion de données

Query
ClickHouse autorise :
  • N’importe quel ordre pour les paires clé-valeur dans l’objet.
  • L’omission de certaines valeurs.
ClickHouse ignore les espaces entre les éléments ainsi que les virgules après les objets. Vous pouvez transmettre tous les objets sur une seule ligne. Il n’est pas nécessaire de les séparer par des sauts de ligne.

Traitement des valeurs omises

ClickHouse remplace les valeurs omises par les valeurs par défaut des types de données correspondants. Si DEFAULT expr est spécifié, ClickHouse applique des règles de substitution différentes selon le paramètre input_format_defaults_for_omitted_fields. Considérez le tableau suivant :
Query
  • Si input_format_defaults_for_omitted_fields = 0, la valeur par défaut de x et de a est 0 (qui est la valeur par défaut du type de données UInt32).
  • Si input_format_defaults_for_omitted_fields = 1, la valeur par défaut de x est 0, mais celle de a est x * 2.
Lors de l’insertion de données avec input_format_defaults_for_omitted_fields = 1, ClickHouse consomme plus de ressources de calcul qu’avec une insertion utilisant input_format_defaults_for_omitted_fields = 0.

Sélection de données

Prenons la table UserActivity comme exemple :
La requête SELECT * FROM UserActivity FORMAT JSONEachRow renvoie :
Contrairement au format JSON, les séquences UTF-8 non valides ne sont pas remplacées. Les valeurs sont échappées de la même manière qu’en JSON.
N’importe quelle séquence d’octets peut être renvoyée dans les chaînes. Utilisez le format JSONEachRow si vous êtes certain que les données de la table peuvent être formatées en JSON sans perte d’information.

Utilisation des structures Nested

Si vous avez une table avec des colonnes du type de données Nested, vous pouvez insérer des données JSON ayant la même structure. Activez cette fonctionnalité avec le paramètre input_format_import_nested_json. Par exemple, prenons la table suivante :
Query
Comme vous pouvez le voir dans la description du type de données Nested, ClickHouse traite chaque composant de la structure imbriquée comme une colonne distincte (n.s et n.i dans notre table). Vous pouvez insérer les données de la manière suivante :
Query
Pour insérer des données sous forme d’objet JSON hiérarchique, activez input_format_import_nested_json=1.
Sans ce paramètre, ClickHouse lève une exception.
Query
Response
Query
Response
Query
Response

Paramètres de format

Dernière modification le 2 juillet 2026