跳转到主要内容
ClickHouse 提供原生命令行客户端,可直接向 ClickHouse 服务器执行 SQL 查询。 它同时支持交互模式 (用于实时执行查询) 和批次模式 (用于脚本编写和自动化) 。 查询结果既可显示在终端中,也可导出到文件,并支持所有 ClickHouse 输出格式,例如 Pretty、CSV、JSON 等。 该客户端可通过进度条、已读取的行数、已处理的字节数以及查询执行时间,实时反馈查询执行进度。 它同时支持命令行选项配置文件

安装

下载 ClickHouse,请运行:
如需一并安装,请运行:
更多安装选项,请参见安装 ClickHouse 不同版本的客户端和 server 彼此兼容,但某些功能在较旧版本的客户端中可能不可用。我们建议客户端和 server 使用相同的版本。

运行

如果你只是下载了 ClickHouse 但未安装,请使用 ./clickhouse client,不要使用 clickhouse-client
要连接到 ClickHouse server,请运行:
根据需要指定其他连接信息: 有关命令行选项的完整列表,请参见命令行选项

连接到 ClickHouse Cloud

你可以在 ClickHouse Cloud 控制台中查看 ClickHouse Cloud 服务的详细信息。选择要连接的服务,然后点击 Connect

选择 Native,即可看到详细信息以及一个 clickhouse-client 命令示例:

在配置文件中存储连接信息

你可以在配置文件中存储一个或多个 ClickHouse 服务器的连接信息。 格式如下:
更多信息,请参阅配置文件一节。
为了突出查询语法,其余示例省略了连接信息 (--host--port 等) 。使用这些命令时,请记得补上。

交互模式

使用 交互模式

要以 交互模式 运行 ClickHouse,只需执行:
这会打开读取-求值-输出循环 (REPL) ,你可以开始以交互方式输入 SQL 查询。 连接成功后,会出现一个提示符,你可以在其中输入查询:
在交互模式下,默认输出格式为 PrettyCompact。 你可以在查询的 FORMAT 子句中修改格式,也可以通过指定 --format 命令行选项来修改。 要使用 Vertical format,可以使用 --vertical,或者在查询末尾加上 \G。 在这种格式下,每个值都会单独占一行,这对于宽表很方便。 在交互模式下,默认情况下,按下 Enter 时会执行你输入的内容。 查询末尾无需分号。 你可以使用 -m, --multiline 参数启动客户端。 要输入多行查询,请在行尾换行符前输入反斜杠 \。 按下 Enter 后,系统会提示你输入查询的下一行。 要执行查询,请以分号结尾并按下 Enter ClickHouse 客户端 基于 replxx (类似于 readline) ,因此支持常见的键盘快捷键并保留历史记录。 默认情况下,历史记录会写入 ~/.clickhouse-client-history 要退出客户端,请按 Ctrl+D,或者输入以下任一内容来代替查询:
  • exitexit;
  • quitquit;
  • qQ:q
  • logoutlogout;

查询处理信息

在处理查询时,客户端会显示:
  1. 进度,默认情况下每秒最多更新 10 次。 对于执行很快的查询,进度可能还来不及显示。
  2. 解析后生成的格式化后的查询,用于调试。
  3. 以指定格式输出的结果。
  4. 结果中的行数、已耗时间以及查询处理的平均速度。 所有数据量均指未压缩数据。
你可以按 Ctrl+C 取消长时间运行的查询。 不过,你仍需要稍等片刻,让服务器中止该请求。 在某些阶段,查询无法取消。 如果不等待而再次按下 Ctrl+C,客户端将退出。 ClickHouse 客户端 允许在查询时传递外部数据 (外部临时表) 。 更多信息,请参见 查询处理的外部数据 一节。

别名

你可以在 REPL 中使用以下别名:
  • \l - SHOW DATABASES
  • \d - SHOW TABLES
  • \c <DATABASE> - USE DATABASE
  • . - 重复上一条查询

键盘快捷键

  • Alt (Option) + Shift + e - 使用当前查询打开编辑器。可通过环境变量 EDITOR 指定要使用的编辑器,默认使用 vim
  • Alt (Option) + # - 注释当前行。
  • Ctrl + r - 模糊搜索历史记录。
所有可用键盘快捷键的完整列表请参见 replxx
要在 MacOS 上正确配置 Meta 键 (Option) :iTerm2:依次进入 Preferences -> Profile -> Keys -> Left Option key,然后点击 Esc+

批次模式

使用批次模式

你可以不以交互方式使用 ClickHouse 客户端,而是让它以批次模式运行。 在批次模式下,ClickHouse 只执行一条查询并立即退出——不会出现交互式提示符,也不会进入循环。 你可以像下面这样指定单条查询:
你也可以使用命令行选项 --query
你可以通过 stdin 传入查询:
假设存在一个 messages 表,你也可以通过命令行插入数据:
指定 --query 时,所有输入都会在一个换行符后追加到请求中。

将 CSV 文件插入远程 ClickHouse 服务

本示例将样本数据集 CSV 文件 cell_towers.csv 插入到 default 数据库中现有的 cell_towers 表:

从命令行插入数据示例

可以通过多种方式从命令行插入数据。 下面的示例使用批次模式将两行 CSV 数据插入 ClickHouse 表中:
在下面的示例中,cat <<_EOF 会开启一个 heredoc,它会持续读取内容,直到再次遇到 _EOF,然后将其输出:
在下面的示例中,使用 cat 将 file.csv 的内容输出到 stdout,并通过管道传递给 clickhouse-client 作为输入:
在批次模式下,默认的数据格式TabSeparated。 如上例所示,你可以在查询的 FORMAT 子句中设置格式。

带参数的查询

你可以在查询中指定参数,并通过命令行选项为其传入值。 这样可以避免在客户端使用特定的动态值来格式化查询。 例如:
也可以在交互式会话中设置参数:

查询语法

在查询中,将要通过命令行参数填入的值用花括号括起来,格式如下:

示例

AI SQL 生成

ClickHouse Client 内置了 AI 辅助功能,可根据自然语言描述生成 SQL 查询。该功能可帮助用户在无需深入了解 SQL 的情况下编写复杂查询。 如果已设置 OPENAI_API_KEYANTHROPIC_API_KEY 环境变量,AI 辅助功能即可开箱即用。有关更高级的配置,请参阅配置部分。

用法

如需使用 AI SQL 生成功能,请在自然语言查询前加上 ??
AI 将:
  1. 自动探索你的数据库 schema
  2. 根据发现的表和列生成合适的 SQL
  3. 立即执行生成的查询

示例

配置

要使用 AI SQL 生成功能,您需要在 ClickHouse 客户端 的配置文件中配置 AI 提供商。您可以使用 OpenAI、Anthropic 或任何兼容 OpenAI 的 API 服务。

基于环境变量的回退机制

如果配置文件中未指定 AI 配置,ClickHouse 客户端 会自动尝试使用环境变量:
  1. 首先检查 OPENAI_API_KEY 环境变量
  2. 如果未找到,再检查 ANTHROPIC_API_KEY 环境变量
  3. 如果两者都未找到,则会禁用 AI 功能
这样无需配置文件也能快速完成设置:

配置文件

如需更精细地控制 AI 设置,请在位于以下位置的 ClickHouse 客户端配置文件中进行配置:
  • $XDG_CONFIG_HOME/clickhouse/config.xml (如果未设置 XDG_CONFIG_HOME,则使用 ~/.config/clickhouse/config.xml) (XML 格式)
  • $XDG_CONFIG_HOME/clickhouse/config.yaml (如果未设置 XDG_CONFIG_HOME,则使用 ~/.config/clickhouse/config.yaml) (YAML 格式)
  • ~/.clickhouse-client/config.xml (XML 格式,旧版位置)
  • ~/.clickhouse-client/config.yaml (YAML 格式,旧版位置)
  • 或使用 --config-file 指定自定义位置

使用 OpenAI 兼容 API (例如 OpenRouter) :
最简配置示例:

参数

  • api_key - AI 服务的 API 密钥。如果已通过环境变量设置,则可省略:
    • OpenAI: OPENAI_API_KEY
    • Anthropic: ANTHROPIC_API_KEY
    • 注意:配置文件中的 API 密钥优先于环境变量
  • provider - AI 提供商:openaianthropic
    • 如果省略,将根据可用的环境变量自动进行回退
  • model - 要使用的模型 (默认值:取决于所选提供商)
    • OpenAI: gpt-4o, gpt-4, gpt-3.5-turbo
    • Anthropic: claude-3-5-sonnet-20241022, claude-3-opus-20240229
    • OpenRouter: 使用其模型命名格式,例如 anthropic/claude-3.5-sonnet
  • base_url - 用于 OpenAI 兼容服务的自定义 API 端点 (可选)
  • timeout_seconds - 请求超时时间 (单位:秒) (默认值:30)
  • enable_schema_access - 允许 AI 探索数据库 schema (默认值:true)
  • max_steps - schema 探索期间可调用工具的最大步数 (默认值:10)
  • temperature - 控制随机性,0.0 = 确定性,1.0 = 更具创造性 (默认值:0.0)
  • max_tokens - 响应的最大长度 (以标记数计) (默认值:1000)
  • system_prompt - 提供给 AI 的自定义指令 (可选)

工作原理

AI SQL 生成器采用多步骤流程:
  1. Schema 发现
AI 使用内置工具探索你的数据库:
  • 列出可用的数据库
  • 发现相关数据库中的表
  • 通过 CREATE TABLE 语句检查表结构
  1. 查询生成
基于发现的 schema,AI 会生成满足以下条件的 SQL:
  • 符合你的自然语言意图
  • 使用正确的表名和列名
  • 应用适当的连接和聚合
  1. 执行
生成的 SQL 会自动执行,并显示结果

局限性

  • 需要可用的互联网连接
  • API 的使用受 AI 提供商的速率限制和费用约束
  • 复杂查询可能需要多次调整
  • AI 仅对 schema 信息具有只读访问权限,无法访问实际数据

安全性

  • API 密钥绝不会发送到 ClickHouse 服务器
  • AI 只能看到 schema 信息 (表名/列名和类型) ,看不到实际数据
  • 所有生成的查询都会遵循您现有的数据库权限

连接字符串

用法

ClickHouse Client 还支持通过与 MongoDBPostgreSQLMySQL 类似的连接字符串连接到 ClickHouse 服务器。其语法如下:

注意事项

如果用户名、密码或数据库已在连接字符串中指定,则不能再通过 --user--password--database 指定 (反之亦然) 。 主机部分可以是主机名,也可以是 IPv4 或 IPv6 地址。 IPv6 地址应放在 [] 中:
连接字符串可以包含多个主机。 ClickHouse 命令行客户端会按顺序 (从左到右) 尝试连接这些主机。 连接一旦建立,就不会再尝试连接其余主机。 连接字符串必须作为 clickHouse-client 的第一个参数指定。 除 --host--port 外,连接字符串还可以与任意数量的其他命令行选项组合使用。 query_parameters 允许以下键: 百分号编码 以下参数中的非 US-ASCII 字符、空格和特殊字符必须进行百分号编码
  • user
  • password
  • hosts
  • database
  • query parameters

示例

连接到 localhost 的 9000 端口,并执行查询 SELECT 1
使用用户 john 和密码 secret 连接到 localhost,主机为 127.0.0.1,端口为 9000
default 用户身份连接到 localhost,主机的 IPv6 地址为 [::1],端口为 9000
以多行模式连接到 localhost 的 9000 端口。
使用用户 default 通过 9000 端口连接到 localhost
连接到 localhost 的 9000 端口,并默认使用 my_database 数据库。
连接到端口 9000 上的 localhost,默认使用连接字符串中指定的 my_database database,并通过简写的 s 参数建立安全连接。
使用默认端口、默认用户和默认数据库,连接到默认主机。
使用默认端口连接到默认主机,用户名为 my_user,且不使用密码。
使用电子邮件地址作为用户名连接到 localhost@ 符号会进行百分号编码,变为 %40
连接到以下两台主机中的任意一台:192.168.1.15192.168.1.25

查询 ID 格式

在交互模式中,ClickHouse 客户端 会为每个查询显示查询 ID。默认情况下,该 ID 的格式如下:
可以在配置文件中的 query_id_formats 标签内指定自定义格式。格式字符串中的 {query_id} 占位符会替换为查询 ID。该标签内可包含多个格式字符串。 此功能可用于生成 URL,便于对查询进行性能分析。 示例
使用上述配置后,查询 ID 将以以下格式显示:

配置文件

ClickHouse 客户端 会使用以下列表中第一个存在的文件:
  • 通过 -c [ -C, --config, --config-file ] 参数指定的文件。
  • ./clickhouse-client.[xml|yaml|yml]
  • $XDG_CONFIG_HOME/clickhouse/config.[xml|yaml|yml] (如果未设置 XDG_CONFIG_HOME,则使用 ~/.config/clickhouse/config.[xml|yaml|yml])
  • ~/.clickhouse-client/config.[xml|yaml|yml]
  • /etc/clickhouse-client/config.[xml|yaml|yml]
可参阅 ClickHouse 仓库中的示例配置文件:clickhouse-client.xml

环境变量选项

可通过环境变量 CLICKHOUSE_USERCLICKHOUSE_PASSWORDCLICKHOUSE_HOST 设置用户名、密码和主机。 命令行参数 --user--password--host,或者连接字符串 (如果已指定) ,其优先级均高于环境变量。

命令行选项

所有命令行选项都可以直接在命令行中指定,也可以在配置文件中设置默认值。

常规选项

连接选项

除了 --host--port--user--password 选项外,客户端还支持连接字符串

查询选项

查询设置

可以在客户端中通过命令行选项指定查询设置,例如:
设置列表请参见设置

格式选项

执行细节

最后修改于 2026年7月2日