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

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-client 的相同 clickhouse 二进制文件执行。下载最新版本的最简单方法是使用以下命令:

备注

您刚下载的二进制文件可以运行各种 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 用户输出内存使用情况:

查询:

结果: