> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Buffers 格式文档

# Buffers

| 输入 | 输出 | 别名 |
| -- | -- | -- |
| ✔  | ✔  |    |

<div id="description">
  ## 说明
</div>

`Buffers` 是一种非常简单的二进制格式，用于**临时性**数据交换，此时消费者和生产者都已知晓 schema 和列顺序。

与 [Native](/zh/reference/formats/Native) 不同，它**不**存储列名、列类型或任何额外元数据。

在这种格式中，数据按[块](/zh/resources/develop-contribute/introduction/architecture#block)以二进制格式读写。Buffers 对每一列都使用与 [Native](/zh/reference/formats/Native) 格式相同的二进制表示，并遵循相同的 Native 格式设置。

对于每个块，会写入以下内容：

1. 列数 (UInt64，小端序) 。
2. 行数 (UInt64，小端序) 。
3. 对每一列：

* 序列化后列数据的总字节数 (UInt64，小端序) 。
* 序列化后的列数据字节，与 [Native](/zh/reference/formats/Native) 格式完全相同。

<div id="example-usage">
  ## 示例用法
</div>

写入文件：

```sql theme={null}
SELECT
    number AS num,
    number * number AS num_square
FROM numbers(10)
INTO OUTFILE 'squares.buffers'
FORMAT Buffers;
```

使用显式的列类型读回：

```sql theme={null}
SELECT
    *
FROM file(
    'squares.buffers',
    'Buffers',
    'col_1 UInt64, col_2 UInt64'
);
```

```txt theme={null}
  ┌─col_1─┬─col_2─┐
  │     0 │     0 │
  │     1 │     1 │
  │     2 │     4 │
  │     3 │     9 │
  │     4 │    16 │
  │     5 │    25 │
  │     6 │    36 │
  │     7 │    49 │
  │     8 │    64 │
  │     9 │    81 │
  └───────┴───────┘
```

如果你有一个列类型相同的表，可以直接填充：

```sql theme={null}
CREATE TABLE number_squares
(
    a UInt64,
    b UInt64
) ENGINE = Memory;

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

查看该表：

```sql theme={null}
SELECT * FROM number_squares;
```

```txt theme={null}
  ┌─a─┬──b─┐
  │ 0 │  0 │
  │ 1 │  1 │
  │ 2 │  4 │
  │ 3 │  9 │
  │ 4 │ 16 │
  │ 5 │ 25 │
  │ 6 │ 36 │
  │ 7 │ 49 │
  │ 8 │ 64 │
  │ 9 │ 81 │
  └───┴────┘
```

<div id="format-settings">
  ## 格式设置
</div>
