Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Buffers

Entrada Salida Alias
✔ ✔

Descripción

Buffers es un formato binario muy simple para el intercambio de datos efímeros, en el que tanto el consumidor como el productor ya conocen el esquema y el orden de las columnas.

A diferencia de Native, no almacena nombres ni tipos de columna, ni metadatos adicionales.

En este formato, los datos se escriben y se leen por bloques en formato binario. Buffers utiliza la misma representación binaria por columna que el formato Native y respeta la misma configuración del formato Native.

Para cada bloque, se escribe la siguiente secuencia:

  1. Número de columnas (UInt64, little-endian).
  2. Número de filas (UInt64, little-endian).
  3. Para cada columna:
  • Tamaño total en bytes de los datos de columna serializados (UInt64, little-endian).
  • Bytes de los datos de columna serializados, exactamente igual que en el formato Native.

Ejemplo de uso

Escribir en un archivo:

SELECT
    number AS num,
    number * number AS num_square
FROM numbers(10)
INTO OUTFILE 'squares.buffers'
FORMAT Buffers;

Vuelva a leerlo especificando explícitamente los tipos de columna:

SELECT
    *
FROM file(
    'squares.buffers',
    'Buffers',
    'col_1 UInt64, col_2 UInt64'
);
  ┌─col_1─┬─col_2─┐
  │     0 │     0 │
  │     1 │     1 │
  │     2 │     4 │
  │     3 │     9 │
  │     4 │    16 │
  │     5 │    25 │
  │     6 │    36 │
  │     7 │    49 │
  │     8 │    64 │
  │     9 │    81 │
  └───────┴───────┘

Si tiene una tabla con los mismos tipos de columna, puede rellenarla directamente:

CREATE TABLE number_squares
(
    a UInt64,
    b UInt64
) ENGINE = Memory;

INSERT INTO number_squares
FROM INFILE 'squares.buffers'
FORMAT Buffers;

Inspeccione la tabla:

SELECT * FROM number_squares;
  ┌─a─┬──b─┐
  │ 0 │  0 │
  │ 1 │  1 │
  │ 2 │  4 │
  │ 3 │  9 │
  │ 4 │ 16 │
  │ 5 │ 25 │
  │ 6 │ 36 │
  │ 7 │ 49 │
  │ 8 │ 64 │
  │ 9 │ 81 │
  └───┴────┘

Ajustes de formato

Navigation