Buffers é um formato binário muito simples para troca de dados efêmeros, em que tanto o consumidor quanto o produtor já conhecem o esquema e a ordem das colunas.
Ao contrário de Native, ele não armazena nomes nem tipos de colunas, nem metadados adicionais.
Nesse formato, os dados são gravados e lidos em blocos em formato binário. O Buffers usa a mesma representação binária por coluna que o formato Native e respeita as mesmas configurações do formato Native.
Para cada bloco, a seguinte sequência é gravada:
- Número de colunas (UInt64, little-endian).
- Número de linhas (UInt64, little-endian).
- Para cada coluna:
- Tamanho total, em bytes, dos dados serializados da coluna (UInt64, little-endian).
- Bytes dos dados serializados da coluna, exatamente como no formato Native.
Grave em um arquivo:
SELECT
number AS num,
number * number AS num_square
FROM numbers(10)
INTO OUTFILE 'squares.buffers'
FORMAT Buffers;
Leia com tipos de coluna explícitos:
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 │
└───────┴───────┘
Se você tiver uma tabela com os mesmos tipos de coluna, poderá preenchê-la diretamente:
CREATE TABLE number_squares
(
a UInt64,
b UInt64
) ENGINE = Memory;
INSERT INTO number_squares
FROM INFILE 'squares.buffers'
FORMAT Buffers;
Inspecione a tabela:
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 │
└───┴────┘
Última modificação em 10 de junho de 2026