Passer au contenu principal

Formats des données d’entrée et de sortie

ClickHouse prend en charge la plupart des formats de données textuels et binaires courants. Cela permet de l’intégrer facilement à presque n’importe quel pipeline de données afin de tirer parti des avantages de ClickHouse.

Formats d’entrée

Les formats d’entrée sont utilisés pour :
  • Analyser les données fournies aux instructions INSERT
  • Exécuter des requêtes SELECT à partir de tables basées sur des fichiers, telles que File, URL ou HDFS
  • Lire des dictionnaires
Choisir le bon format d’entrée est essentiel pour une ingestion de données efficace dans ClickHouse. Avec plus de 70 formats pris en charge, sélectionner l’option la plus performante peut avoir un impact significatif sur la vitesse d’insertion, l’utilisation du CPU et de la mémoire, ainsi que sur l’efficacité globale du système. Pour vous aider à vous y retrouver parmi ces options, nous avons évalué les performances d’ingestion selon les formats, ce qui fait ressortir les points clés suivants :
  • Le format Native est le format d’entrée le plus efficace, offrant la meilleure compression, la plus faible consommation de ressources et un minimum de surcoût de traitement côté serveur.
  • La compression est essentielle - LZ4 réduit la taille des données avec un coût CPU minimal, tandis que ZSTD offre un taux de compression plus élevé au prix d’une utilisation supplémentaire du CPU.
  • Le prétri a un impact modéré, car ClickHouse trie déjà efficacement.
  • Le traitement par lots améliore considérablement l’efficacité - des lots plus volumineux réduisent le surcoût des insertions et améliorent le débit.
Pour une analyse détaillée des résultats et des bonnes pratiques, consultez l’analyse complète du benchmark. Pour consulter l’ensemble des résultats des tests, explorez le tableau de bord en ligne FastFormats.

Formats de sortie

Les formats de sortie pris en charge servent à :
  • Organiser les résultats d’une requête SELECT
  • Effectuer des opérations INSERT dans des tables basées sur des fichiers

Aperçu des formats

Les formats pris en charge sont : Vous pouvez contrôler certains paramètres de traitement des formats à l’aide des paramètres de ClickHouse. Pour plus d’informations, consultez la section Paramètres.

Schéma de format

Le nom du fichier contenant le schéma de format est défini par le paramètre format_schema. Il est nécessaire de définir ce paramètre lorsque l’un des formats Cap'n Proto ou Protobuf est utilisé. Le schéma de format est une combinaison d’un nom de fichier et du nom d’un type de message dans ce fichier, séparés par deux-points, par ex. schemafile.proto:MessageType. Si le fichier possède l’extension standard du format (par exemple, .proto pour Protobuf), celle-ci peut être omise et, dans ce cas, le schéma de format prend la forme schemafile:MessageType. Si vous importez ou exportez des données via le client en mode interactif, le nom du fichier spécifié dans le schéma de format peut contenir un chemin absolu ou un chemin relatif au répertoire courant sur le client. Si vous utilisez le client en mode batch, le chemin du schéma doit être relatif pour des raisons de sécurité. Si vous importez ou exportez des données via l’interface HTTP, le nom du fichier spécifié dans le schéma de format doit se trouver dans le répertoire indiqué par format_schema_path dans la configuration du serveur.

Ignorer les erreurs

Certains formats tels que CSV, TabSeparated, TSKV, JSONEachRow, Template, CustomSeparated et Protobuf peuvent ignorer une ligne corrompue en cas d’erreur d’analyse et reprendre l’analyse au début de la ligne suivante. Consultez les paramètres input_format_allow_errors_num et input_format_allow_errors_ratio. Limites :
  • En cas d’erreur d’analyse, JSONEachRow ignore toutes les données jusqu’au saut de ligne (ou à la fin du fichier), donc les lignes doivent être délimitées par \n pour que les erreurs soient correctement comptabilisées.
  • Template et CustomSeparated utilisent le délimiteur après la dernière colonne et le délimiteur entre les lignes pour repérer le début de la ligne suivante ; l’ignorance des erreurs ne fonctionne donc que si au moins l’un des deux n’est pas vide.
Dernière modification le 2 juillet 2026