Passer au contenu principal
EntréeSortieAlias

Description

Le format BSONEachRow analyse les données comme une séquence de documents Binary JSON (BSON), sans aucun séparateur entre eux. Chaque ligne est représentée par un document unique, et chaque colonne par un champ unique du document BSON, avec le nom de la colonne comme clé.

Correspondance des types de données

Pour la sortie, la correspondance suivante est utilisée entre les types ClickHouse et les types BSON :
Type ClickHouseType BSON
Bool\x08 booléen
Int8/UInt8/Enum8\x10 int32
Int16/UInt16/Enum16\x10 int32
Int32\x10 int32
UInt32\x12 int64
Int64/UInt64\x12 int64
Float32/Float64\x01 double
Date/Date32\x10 int32
DateTime\x12 int64
DateTime64\x09 datetime
Decimal32\x10 int32
Decimal64\x12 int64
Decimal128\x05 binaire, \x00 sous-type binaire, taille = 16
Decimal256\x05 binaire, \x00 sous-type binaire, taille = 32
Int128/UInt128\x05 binaire, \x00 sous-type binaire, taille = 16
Int256/UInt256\x05 binaire, \x00 sous-type binaire, taille = 32
String/FixedString\x05 binaire, \x00 sous-type binaire ou \x02 chaîne si le paramètre output_format_bson_string_as_string est activé
UUID\x05 binaire, \x04 sous-type uuid, taille = 16
Array\x04 array
Tuple\x04 array
Named Tuple\x03 document
Map\x03 document
IPv4\x10 int32
IPv6\x05 binaire, \x00 sous-type binaire
Pour l’entrée, la correspondance suivante est utilisée entre les types BSON et les types ClickHouse :
Type BSONType ClickHouse
\x01 doubleFloat32/Float64
\x02 chaîneString/FixedString
\x03 documentMap/Named Tuple
\x04 arrayArray/Tuple
\x05 binaire, \x00 sous-type binaireString/FixedString/IPv6
\x05 binaire, \x02 ancien sous-type binaireString/FixedString
\x05 binaire, \x03 ancien sous-type uuidUUID
\x05 binaire, \x04 sous-type uuidUUID
\x07 ObjectIdString/FixedString
\x08 booléenBool
\x09 datetimeDateTime64
\x0A valeur NULLNULL
\x0D code JavaScriptString/FixedString
\x0E symboleString/FixedString
\x10 int32Int32/UInt32/Decimal32/IPv4/Enum8/Enum16
\x12 int64Int64/UInt64/Decimal64/DateTime64
Les autres types BSON ne sont pas pris en charge. De plus, ce format effectue des conversions entre différents types entiers. Par exemple, il est possible d’insérer dans ClickHouse une valeur BSON int32 en tant que UInt8. Les grands entiers et les types décimaux comme Int128/UInt128/Int256/UInt256/Decimal128/Decimal256 peuvent être interprétés à partir d’une valeur BSON binaire avec le sous-type binaire \x00. Dans ce cas, le format vérifie que la taille des données binaires correspond à celle de la valeur attendue.
Ce format ne fonctionne pas correctement sur les plates-formes big-endian.

Exemple d’utilisation

Insertion de données

À l’aide d’un fichier BSON nommé football.bson et contenant les données suivantes :
    ┌───────date─┬─season─┬─home_team─────────────┬─away_team───────────┬─home_team_goals─┬─away_team_goals─┐
 1. │ 2022-04-30 │   2021 │ Sutton United         │ Bradford City       │               1 │               4 │
 2. │ 2022-04-30 │   2021 │ Swindon Town          │ Barrow              │               2 │               1 │
 3. │ 2022-04-30 │   2021 │ Tranmere Rovers       │ Oldham Athletic     │               2 │               0 │
 4. │ 2022-05-02 │   2021 │ Port Vale             │ Newport County      │               1 │               2 │
 5. │ 2022-05-02 │   2021 │ Salford City          │ Mansfield Town      │               2 │               2 │
 6. │ 2022-05-07 │   2021 │ Barrow                │ Northampton Town    │               1 │               3 │
 7. │ 2022-05-07 │   2021 │ Bradford City         │ Carlisle United     │               2 │               0 │
 8. │ 2022-05-07 │   2021 │ Bristol Rovers        │ Scunthorpe United   │               7 │               0 │
 9. │ 2022-05-07 │   2021 │ Exeter City           │ Port Vale           │               0 │               1 │
10. │ 2022-05-07 │   2021 │ Harrogate Town A.F.C. │ Sutton United       │               0 │               2 │
11. │ 2022-05-07 │   2021 │ Hartlepool United     │ Colchester United   │               0 │               2 │
12. │ 2022-05-07 │   2021 │ Leyton Orient         │ Tranmere Rovers     │               0 │               1 │
13. │ 2022-05-07 │   2021 │ Mansfield Town        │ Forest Green Rovers │               2 │               2 │
14. │ 2022-05-07 │   2021 │ Newport County        │ Rochdale            │               0 │               2 │
15. │ 2022-05-07 │   2021 │ Oldham Athletic       │ Crawley Town        │               3 │               3 │
16. │ 2022-05-07 │   2021 │ Stevenage Borough     │ Salford City        │               4 │               2 │
17. │ 2022-05-07 │   2021 │ Walsall               │ Swindon Town        │               0 │               3 │
    └────────────┴────────┴───────────────────────┴─────────────────────┴─────────────────┴─────────────────┘
Insérez les données :
INSERT INTO football FROM INFILE 'football.bson' FORMAT BSONEachRow;

Lecture des données

Lisez les données à l’aide du format BSONEachRow :
SELECT *
FROM football INTO OUTFILE 'docs_data/bson/football.bson'
FORMAT BSONEachRow
BSON est un format binaire qui ne s’affiche pas sous une forme lisible dans un terminal. Utilisez INTO OUTFILE pour produire des fichiers BSON.

Paramètres de format

ParamètreDescriptionPar défaut
output_format_bson_string_as_stringUtiliser le type String de BSON au lieu de Binary pour les colonnes de type String.false
input_format_bson_skip_fields_with_unsupported_types_in_schema_inferenceAutoriser l’omission des colonnes dont les types ne sont pas pris en charge lors de l’inférence du schéma pour le format BSONEachRow.false
Dernière modification le 25 juin 2026