Passer au contenu principal
Nous devons souvent traiter des données dans des formats textuels personnalisés. Il peut s’agir d’un format non standard, d’un JSON invalide ou d’un CSV corrompu. L’utilisation de parseurs standard comme CSV ou JSON ne fonctionne pas dans tous ces cas. Mais ClickHouse propose justement des formats puissants pour y faire face : Template et Regex.

Importation à partir d’un modèle

Supposons que nous voulions importer des données depuis le fichier journal :
Nous pouvons utiliser le format Template pour importer ces données. Nous devons définir une chaîne de modèle contenant des marqueurs de substitution pour les valeurs de chaque ligne de données d’entrée :
Créons une table pour y importer nos données :
Pour importer des données à l’aide d’un modèle spécifique, nous devons enregistrer notre chaîne de modèle dans un fichier (row.template dans notre cas) :
Nous définissons le nom d’une colonne et la règle d’échappement au format ${name:escaping}. Plusieurs options sont disponibles ici, comme CSV, JSON, Escaped ou Quoted, qui implémentent les règles d’échappement correspondantes. Nous pouvons maintenant utiliser le fichier fourni comme argument de l’option format_template_row lors de l’importation des données (notez que les fichiers de modèle et de données ne doivent pas contenir de symbole \n supplémentaire à la fin du fichier) :
Et nous pouvons vérifier que nos données ont bien été chargées dans la table :

Ignorer les espaces

Envisagez d’utiliser TemplateIgnoreSpaces, qui permet d’ignorer les espaces entre les délimiteurs dans un Template :

Exporter des données à l’aide de modèles

Nous pouvons également exporter des données vers n’importe quel format texte à l’aide de modèles. Dans ce cas, nous devons créer deux fichiers : Modèle du jeu de résultats, qui définit la structure de l’ensemble du jeu de résultats :
Ici, rows_read et time sont des métriques système disponibles pour chaque requête. Quant à data, il correspond aux lignes générées (${data} doit toujours être le premier espace réservé dans ce fichier), à partir d’un modèle défini dans un fichier de modèle de ligne :
Utilisons maintenant ces modèles pour exporter la requête suivante :

Exportation vers des fichiers HTML

Les résultats basés sur des modèles peuvent également être exportés dans des fichiers à l’aide d’une clause INTO OUTFILE. Générons des fichiers HTML à partir des formats jeu de résultats et ligne fournis :

Exportation au format XML

Le format Template peut être utilisé pour générer tous les fichiers texte imaginables, y compris en XML. Il suffit de fournir un modèle approprié et d’effectuer l’exportation. Vous pouvez également utiliser le format XML pour obtenir des résultats XML standard, métadonnées comprises :

Importation de données à l’aide d’expressions régulières

Le format Regexp permet de gérer des cas plus complexes, lorsque les données d’entrée doivent être analysées de manière plus élaborée. Analysons notre fichier d’exemple error.log, mais cette fois en capturant le nom du fichier et le protocole afin de les enregistrer dans des colonnes distinctes. Commençons par préparer une nouvelle table :
Nous pouvons maintenant importer des données à l’aide d’une expression régulière :
ClickHouse insérera les données de chaque groupe de capture dans la colonne correspondante selon leur ordre. Vérifions les données :
Par défaut, ClickHouse renvoie une erreur en cas de lignes non reconnues. Si vous préférez ignorer les lignes non reconnues, activez ce comportement à l’aide de l’option format_regexp_skip_unmatched :

Autres formats

ClickHouse prend en charge de nombreux formats, textuels comme binaires, afin de couvrir divers scénarios et plateformes. Découvrez d’autres formats et différentes façons de les utiliser dans les articles suivants : Consultez également clickhouse-local - un outil portable complet pour travailler sur des fichiers locaux/distants sans avoir besoin d’un serveur ClickHouse.
Dernière modification le 25 juin 2026