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-local
和 s3
表函数在就地查询文件(无须将数据插入到 ClickHouse 表中)。我们在一个公共桶中有一个名为 house_0.parquet
的文件,包含在英国销售的房产价格。让我们看看它有多少行:
该文件有 2.7M 行:
查看 ClickHouse 从文件中推测出的模式总是很有用:
让我们看看最贵的社区:
当您准备将文件插入到 ClickHouse 中时,启动一个 ClickHouse 服务器并将 file
和 s3
表函数的结果插入到一个 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
— 不附加系统表。--help
—clickhouse-local
参数参考。-V
,--version
— 打印版本信息并退出。
此外,还有每个 ClickHouse 配置变量的参数,这些参数更常用,而不是 --config-file
。
示例
前一个示例与以下内容相同:
您不必使用 stdin
或 --file
参数,并且可以使用 file
表函数 打开任意数量的文件:
现在让我们输出每个 Unix 用户的内存使用情况:
查询:
结果: