JSONEachRow (NDJSON). Ce format interprète les clés de chaque ligne JSON comme des colonnes. Par exemple :
Lecture de JSON sous forme d’objet
JSONEachRow lit du JSON délimité par des sauts de ligne, chaque ligne étant interprétée comme un objet distinct associé à une ligne de table, et chaque clé à une colonne. C’est idéal lorsque le JSON a une structure prévisible, avec un seul type par colonne.
À l’inverse, JSONAsObject traite chaque ligne comme un objet JSON unique et le stocke dans une seule colonne, de type JSON, ce qui le rend plus adapté aux payloads JSON imbriqués et aux cas où les clés sont dynamiques et peuvent potentiellement avoir plusieurs types.
Utilisez JSONEachRow pour les insertions ligne par ligne, et JSONAsObject pour stocker des données JSON flexibles ou dynamiques.
Comparez l’exemple ci-dessus avec la requête suivante, qui lit les mêmes données sous forme d’objet JSON, à raison d’un objet par ligne :
JSONAsObject est utile pour insérer des lignes dans une table en utilisant une seule colonne de type objet JSON, par ex.
JSONAsObject peut également être utile pour lire du JSON délimité par des retours à la ligne lorsque la structure des objets n’est pas homogène. Par exemple, si le type d’une clé varie d’une ligne à l’autre (il peut parfois s’agir d’une chaîne, mais d’autres fois d’un objet). Dans ce cas, ClickHouse ne peut pas inférer un schéma stable avec JSONEachRow, et JSONAsObject permet d’ingérer les données sans imposer un typage strict, en stockant chaque ligne JSON entière dans une seule colonne. Par exemple, constatez que JSONEachRow échoue dans l’exemple suivant :
JSONAsObject peut être utilisé dans ce cas, car le type JSON prend en charge plusieurs types pour une même sous-colonne.
Tableau d’objets JSON
JSONEachRow (en insérant les données à partir du fichier list.json) :
Clés des objets JSON
JSONObjectEachRow :
Spécifier les valeurs de clé de l’objet parent
file() :
id a bien été renseignée avec les valeurs de clé.
Tableaux JSON
JSONCompactEachRow pour ce faire :
Importation de colonnes individuelles à partir de tableaux JSON
JSONColumns pour analyser des données au format suivant :
JSONCompactColumns :
Stocker des objets JSON au lieu de les analyser
String (ou JSON) plutôt que de les analyser. Cela peut être utile lorsque vous traitez une liste d’objets JSON aux structures différentes. Prenons ce fichier comme exemple, où plusieurs objets JSON différents sont contenus dans une liste racine :
JSONAsString pour conserver les objets JSON au lieu de les analyser :
JSONAsString fonctionne parfaitement avec des fichiers au format JSON, à raison d’un objet par ligne (généralement utilisés avec le format JSONEachRow).
Schéma pour les objets imbriqués
Array, JSON ou Tuple) pour charger les données :
Accéder aux objets JSON imbriqués
Ignorer les colonnes inconnues
month :
BSON
out.bson.