Saltar al contenido principal
EntradaSalidaAlias

Descripción

El formato BSONEachRow interpreta los datos como una secuencia de documentos Binary JSON (BSON) sin ningún separador entre ellos. Cada fila se representa como un único documento y cada columna como un único campo de documento BSON, con el nombre de la columna como clave.

Correspondencia de tipos de datos

Para la salida, se utiliza la siguiente correspondencia entre los tipos de ClickHouse y los tipos BSON:
Tipo de ClickHouseTipo BSON
Bool\x08 boolean
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 binary, \x00 binary subtype, tamaño = 16
Decimal256\x05 binary, \x00 binary subtype, tamaño = 32
Int128/UInt128\x05 binary, \x00 binary subtype, tamaño = 16
Int256/UInt256\x05 binary, \x00 binary subtype, tamaño = 32
String/FixedString\x05 binary, \x00 binary subtype o \x02 string si la configuración output_format_bson_string_as_string está habilitada
UUID\x05 binary, \x04 uuid subtype, tamaño = 16
Array\x04 array
Tuple\x04 array
Named Tuple\x03 document
Map\x03 document
IPv4\x10 int32
IPv6\x05 binary, \x00 binary subtype
Para la entrada, se utiliza la siguiente correspondencia entre los tipos BSON y los tipos de ClickHouse:
Tipo BSONTipo de ClickHouse
\x01 dobleFloat32/Float64
\x02 stringString/FixedString
\x03 documentoMap/Tupla con nombre
\x04 arrayArray/Tuple
\x05 binario, subtipo binario \x00String/FixedString/IPv6
\x05 binario, subtipo binario antiguo \x02String/FixedString
\x05 binario, subtipo uuid antiguo \x03UUID
\x05 binario, subtipo uuid \x04UUID
\x07 ObjectIdString/FixedString
\x08 booleanBool
\x09 datetimeDateTime64
\x0A valor NULLNULL
\x0D código JavaScriptString/FixedString
\x0E símboloString/FixedString
\x10 int32Int32/UInt32/Decimal32/IPv4/Enum8/Enum16
\x12 int64Int64/UInt64/Decimal64/DateTime64
No se admiten otros tipos BSON. Además, realiza conversiones entre distintos tipos enteros. Por ejemplo, es posible insertar un valor BSON int32 en ClickHouse como UInt8. Los enteros grandes y decimales, como Int128/UInt128/Int256/UInt256/Decimal128/Decimal256, se pueden analizar a partir de un valor BSON Binary con el subtipo binario \x00. En este caso, el formato validará que el tamaño de los datos binarios coincida con el tamaño del valor esperado.
Este formato no funciona correctamente en plataformas Big-Endian.

Ejemplo de uso

Inserción de datos

Utiliza un archivo BSON con los siguientes datos, llamado football.bson:
    ┌───────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 │
    └────────────┴────────┴───────────────────────┴─────────────────────┴─────────────────┴─────────────────┘
Inserta los datos:
INSERT INTO football FROM INFILE 'football.bson' FORMAT BSONEachRow;

Lectura de datos

Lea datos con el formato BSONEachRow:
SELECT *
FROM football INTO OUTFILE 'docs_data/bson/football.bson'
FORMAT BSONEachRow
BSON es un formato binario que no se puede ver en la terminal de forma legible para humanos. Use INTO OUTFILE para generar archivos BSON.

Configuración del formato

ConfiguraciónDescripciónPredeterminado
output_format_bson_string_as_stringUsa el tipo String de BSON en lugar de Binary para las columnas String.false
input_format_bson_skip_fields_with_unsupported_types_in_schema_inferencePermite omitir columnas con tipos no compatibles durante la inferencia de esquema para el formato BSONEachRow.false
Última modificación el 10 de junio de 2026