Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

BSONEachRow

Entrada Salida Alias

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 ClickHouse Tipo 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 BSON Tipo de ClickHouse
\x01 doble Float32/Float64
\x02 string String/FixedString
\x03 documento Map/Tupla con nombre
\x04 array Array/Tuple
\x05 binario, subtipo binario \x00 String/FixedString/IPv6
\x05 binario, subtipo binario antiguo \x02 String/FixedString
\x05 binario, subtipo uuid antiguo \x03 UUID
\x05 binario, subtipo uuid \x04 UUID
\x07 ObjectId String/FixedString
\x08 boolean Bool
\x09 datetime DateTime64
\x0A valor NULL NULL
\x0D código JavaScript String/FixedString
\x0E símbolo String/FixedString
\x10 int32 Int32/UInt32/Decimal32/IPv4/Enum8/Enum16
\x12 int64 Int64/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.

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

Configuración del formato

Configuración Descripción Predeterminado
output_format_bson_string_as_string Usa el tipo String de BSON en lugar de Binary para las columnas String. false
input_format_bson_skip_fields_with_unsupported_types_in_schema_inference Permite omitir columnas con tipos no compatibles durante la inferencia de esquema para el formato BSONEachRow. false
Navigation