跳到主要内容
跳到主要内容

clickhouse-local

何时使用 clickhouse-local 与 ClickHouse

clickhouse-local 是一个易于使用的 ClickHouse 版本,非常适合需要使用 SQL 对本地和远程文件进行快速处理的开发人员,而无需安装完整的数据库服务器。使用 clickhouse-local,开发人员可以直接从命令行使用 SQL 命令(使用 ClickHouse SQL 方言),提供了一种简单高效的方式来访问 ClickHouse 特性,而无需完整安装 ClickHouse。clickhouse-local 的主要好处之一是它在安装 clickhouse-client 时已经包含。这意味着开发人员可以迅速开始使用 clickhouse-local,而无需复杂的安装过程。

虽然 clickhouse-local 是一个很好的开发和测试工具,以及处理文件的工具,但它不适合用于为最终用户或应用程序提供服务。在这些情况下,建议使用开源的 ClickHouse。ClickHouse 是一个强大的 OLAP 数据库,旨在处理大规模分析工作负载。它可以对大型数据集上的复杂查询进行快速高效的处理,使其非常适合生产环境,在这些环境中高性能至关重要。此外,ClickHouse 还提供许多功能,如复制、分片和高可用性,这些是扩展到处理大数据集和为应用程序提供服务所必需的。如果您需要处理更大的数据集或为最终用户或应用程序提供服务,建议使用开源 ClickHouse,而不是 clickhouse-local

请阅读下面的文档,展示 clickhouse-local 的示例用例,例如 查询本地文件读取 S3 中的 parquet 文件

下载 clickhouse-local

clickhouse-local 使用相同的 clickhouse 二进制文件执行,该二进制文件运行 ClickHouse 服务器和 clickhouse-client。下载最新版本的最简单方法是使用以下命令:

备注

您刚刚下载的二进制文件可以运行各种 ClickHouse 工具和实用程序。如果您想将 ClickHouse 作为数据库服务器来运行,请查看 快速入门

使用 SQL 查询文件中的数据

clickhouse-local 的一个常见用法是对文件运行临时查询:您不必将数据插入到表中。clickhouse-local 可以将文件中的数据流入一个临时表并执行您的 SQL。

如果文件位于与 clickhouse-local 一样的机器上,您只需指定要加载的文件。以下 reviews.tsv 文件包含亚马逊产品评论的一个样本:

此命令是以下命令的简写:

ClickHouse 根据文件名扩展名知道文件使用制表符分隔格式。如果您需要明确指定格式,只需添加某种 许多 ClickHouse 输入格式:

file 表函数创建一个表,您可以使用 DESCRIBE 查看推测的模式:

提示

您可以在文件名中使用通配符(请参阅 通配符替换)。

示例:

让我们找到评分最高的产品:

在 AWS S3 中查询 Parquet 文件中的数据

如果您在 S3 中有一个文件,请使用 clickhouse-locals3 表函数在就地查询文件(无须将数据插入到 ClickHouse 表中)。我们在一个公共桶中有一个名为 house_0.parquet 的文件,包含在英国销售的房产价格。让我们看看它有多少行:

该文件有 2.7M 行:

查看 ClickHouse 从文件中推测出的模式总是很有用:

让我们看看最贵的社区:

提示

当您准备将文件插入到 ClickHouse 中时,启动一个 ClickHouse 服务器并将 files3 表函数的结果插入到一个 MergeTree 表中。查看 快速入门 以获取更多细节。

格式转换

您可以使用 clickhouse-local 在不同格式之间转换数据。示例:

格式是根据文件扩展名自动检测的:

作为简写,您可以使用 --copy 参数来编写:

使用

默认情况下,clickhouse-local 可以访问同一主机上 ClickHouse 服务器的数据,并且不依赖于服务器的配置。它还支持使用 --config-file 参数加载服务器配置。对于临时数据,默认情况下会创建一个唯一的临时数据目录。

基本用法(Linux):

基本用法(Mac):

备注

clickhouse-local 也在通过 WSL2 支持 Windows。

参数:

  • -S, --structure — 输入数据的表结构。
  • --input-format — 输入格式,默认为 TSV
  • -F, --file — 数据路径,默认为 stdin
  • -q, --query — 执行的查询,以 ; 作为分隔符。可以多次指定 --query,例如 --query "SELECT 1" --query "SELECT 2"。不能与 --queries-file 同时使用。
  • --queries-file - 包含要执行的查询的文件路径。可以多次指定 --queries-file,例如 --query queries1.sql --query queries2.sql。不能与 --query 同时使用。
  • --multiquery, -n – 如果指定,可以在 --query 选项之后列出以分号分隔的多个查询。为了方便,也可以省略 --query,直接在 --multiquery 之后传递查询。
  • -N, --table — 输出数据存放的表名,默认为 table
  • -f, --format, --output-format — 输出格式,默认为 TSV
  • -d, --database — 默认数据库,默认为 _local
  • --stacktrace — 在发生异常时是否转储调试输出。
  • --echo — 在执行前打印查询。
  • --verbose — 详细说明查询执行情况。
  • --logger.console — 日志输出到控制台。
  • --logger.log — 日志文件名。
  • --logger.level — 日志级别。
  • --ignore-error — 如果查询失败,不停止处理。
  • -c, --config-file — 配置文件的路径,格式与 ClickHouse 服务器的相同,默认为空配置。
  • --no-system-tables — 不附加系统表。
  • --helpclickhouse-local 参数参考。
  • -V, --version — 打印版本信息并退出。

此外,还有每个 ClickHouse 配置变量的参数,这些参数更常用,而不是 --config-file

示例

前一个示例与以下内容相同:

您不必使用 stdin--file 参数,并且可以使用 file 表函数 打开任意数量的文件:

现在让我们输出每个 Unix 用户的内存使用情况:

查询:

结果: