跳转到主要内容

将文件从 Parquet 转换为 CSV 或 JSON

你可以使用 clickhouse-local 在 ClickHouse 支持的任意输入和输出格式之间转换文件 (支持超过 70 种不同格式!) 。本文将把 S3 中的一个 Parquet 文件转换为 CSV 和 JSON 文件。 我们先从基础讲起。ClickHouse 提供了一组表函数,可从文件、数据库和其他资源中读取数据,并将其转换为表。为了演示,假设我们在 S3 中有一个 Parquet 文件。我们将使用 s3 表函数来读取它 (ClickHouse 会根据文件名判断它是 Parquet 文件) 。 不过首先,先下载 clickhouse 二进制文件:

使用表函数访问数据

让我们对 s3 表函数创建的结果表执行 DESCRIBE,验证是否能够读取该文件:
这个文件包含英国已售房产的房价数据。返回结果如下所示:
你可以对这些数据执行任何所需的查询。例如,来看看哪些城镇的房屋平均价格最高:
响应如下:

将 Parquet 文件转换为 CSV

你可以将任何 SQL 查询的结果写入文件。让我们从 S3 中的 Parquet 文件提取所有列,并将输出写入一个新的 CSV 文件。由于输出文件以 .csv 结尾,ClickHouse 会自动使用 CSV 输出格式:
让我们来验证一下是否已成功:

将 Parquet 文件转换为 JSON

要将 Parquet 文件转换为 JSON,只需更改输出文件的扩展名:
我们来验证一下是否已生效:

将 CSV 转换为 Parquet

反过来也一样——我们可以轻松读取新的 CSV 文件,并将其输出为 Parquet 文件。本地文件 house_prices.csv 可以在 ClickHouse 中使用 file 表函数读取,而 ClickHouse 会根据文件名以 .parquet 结尾这一点,将文件输出为 Parquet 格式 (或者我们也可以添加 FORMAT Parquet 子句) :
正如上文所述,你可以结合 clickhouse local 使用任意一种 ClickHouse 输入和输出格式,轻松将文件转换为不同格式。
最后修改于 2026年6月19日