Passer au contenu principal
ClickHouse prend en charge plusieurs formats binaires, qui offrent de meilleures performances et une utilisation plus efficace de l’espace. Les formats binaires sont également fiables en matière d’encodage des caractères, puisque les données sont enregistrées sous forme binaire. Nous allons utiliser la table some_data table et les données pour cette démonstration ; n’hésitez pas à reproduire cela sur votre instance ClickHouse.

Exportation au format Native de ClickHouse

Le format de données le plus efficace pour exporter et importer des données entre des nœuds ClickHouse est le format Native. L’exportation s’effectue à l’aide de la clause INTO OUTFILE :
Cela créera le fichier data.clickhouse au format Native.

Importation depuis le format Native

Pour importer des données, nous pouvons utiliser file() pour les petits fichiers ou à des fins d’exploration :
Lorsque vous utilisez la fonction file(), avec ClickHouse Cloud, vous devez exécuter les commandes dans clickhouse client sur la machine où se trouve le fichier. Vous pouvez également utiliser clickhouse-local pour explorer les fichiers localement.
En production, nous utilisons FROM INFILE pour importer des données :

Compression du format Native

Nous pouvons également activer la compression lors de l’export de données au format Native (ainsi que dans la plupart des autres formats) au moyen d’une clause COMPRESSION :
Nous avons utilisé la compression LZ4 pour l’export. Il faudra la spécifier lors de l’import des données :

Exportation vers RowBinary

Un autre format binaire pris en charge est RowBinary, qui permet d’importer et d’exporter des données sous forme de lignes encodées en binaire :
Cela génère le fichier data.binary au format binaire par lignes.

Explorer les fichiers RowBinary

L’inférence automatique du schéma n’est pas prise en charge pour ce format. Pour l’explorer avant le chargement, nous devons donc définir explicitement le schéma :
Vous pouvez utiliser RowBinaryWithNames, qui ajoute également une ligne d’en-tête contenant la liste des colonnes. RowBinaryWithNamesAndTypes ajoute aussi une ligne d’en-tête supplémentaire contenant les types de colonnes.

Importation à partir de fichiers RowBinary

Pour charger des données depuis un fichier RowBinary, nous pouvons utiliser la clause FROM INFILE :

Importation d’une valeur binaire unique avec RawBLOB

Supposons que nous voulions lire l’intégralité d’un fichier binaire et l’enregistrer dans un champ d’une table. C’est précisément dans ce cas que le format RawBLOB peut être utilisé. Ce format ne peut être utilisé directement qu’avec une table à une seule colonne :
Enregistrons un fichier image dans la table images :
Nous pouvons vérifier la longueur du champ data, qui sera égale à la taille du fichier d’origine :

Export des données RawBLOB

Ce format peut également être utilisé pour exporter des données à l’aide d’une clause INTO OUTFILE :
Notez que nous avons dû utiliser LIMIT 1, car exporter plus d’une valeur créera un fichier corrompu.

MessagePack

ClickHouse prend en charge l’importation et l’exportation au format MessagePack via MsgPack. Pour exporter au format MessagePack :
Pour importer des données à partir d’un fichier MessagePack :

Protocol Buffers

Pour travailler avec Protocol Buffers, nous devons d’abord définir un fichier de schéma :
Le chemin d’accès à ce fichier de schéma (schema.proto dans notre cas) est défini dans l’option de configuration format_schema pour le format Protobuf :
Cela enregistre les données dans le fichier proto.bin. ClickHouse prend également en charge l’importation de données Protobuf ainsi que de messages imbriqués. Vous pouvez utiliser ProtobufSingle pour traiter un seul message Protocol Buffer (dans ce cas, les délimiteurs de longueur sont omis).

Cap’n Proto

Un autre format de sérialisation binaire populaire pris en charge par ClickHouse est Cap’n Proto. Comme avec le format Protobuf, nous devons définir un fichier de schéma (schema.capnp) dans notre exemple :
Nous pouvons maintenant importer et exporter au format CapnProto avec ce schéma :
Notez que nous avons dû convertir la colonne Date en UInt32 afin d’aligner les types correspondants.

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 ainsi que 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 ou distants sans démarrer ClickHouse server.
Dernière modification le 25 juin 2026