跳转到主要内容

说明

Apache Arrow 提供两种内置的列式存储格式。 ClickHouse 支持对这些格式进行读写。 Arrow 是 Apache Arrow 的“文件模式”格式,专为内存中的随机访问而设计。

数据类型匹配

下表列出了支持的数据类型,以及它们在 INSERTSELECT 查询中与 ClickHouse 数据类型 的对应关系。 Array 可以嵌套,其参数也可以是 Nullable 类型的值。TupleMap 类型同样可以嵌套。 DICTIONARY 类型支持用于 INSERT 查询;对于 SELECT 查询,则提供了 output_format_arrow_low_cardinality_as_dictionary 设置,可将 LowCardinality 类型输出为 DICTIONARY 类型。请注意,LowCardinality 字典中可能包含未使用的值,这可能导致输出的 Arrow DICTIONARY 中也出现未使用的值。 不支持的 Arrow 数据类型:
  • FIXED_SIZE_BINARY
  • JSON
  • UUID
  • ENUM
ClickHouse 表中列的数据类型不必与对应的 Arrow 数据字段完全一致。插入数据时,ClickHouse 会根据上表解释数据类型,然后将数据转换为为 ClickHouse 表中列设置的数据类型。

示例用法

在下面的示例中,我们使用 ClickHouse SQL playground 提供的 forex 数据集。

选择数据

我们从 Playground 中选取一天的 EUR/USD 汇率数据,并将其保存到本地 forex_eurusd.arrow 文件中。我们通过 HTTP 接口查询 Playground, 其中 host 为 sql-clickhouse.clickhouse.com,user 为 demo (无需密码) :

读取文件内容

现在,我们可以使用 clickhouse-localfile 表函数读取本地 Arrow 文件。该文件是 自描述的,因此 Arrow 格式会自动推断 schema:
Response

插入数据

要将 Arrow 文件加载到 ClickHouse 表中,请将其通过 clickhouse-client 并使用 FORMAT Arrow 导入:

格式设置

最后修改于 2026年7月2日