clickhousectl 是 ClickHouse 的 命令行客户端,适用于本地和云端。
使用 clickhousectl,你可以:
- 安装和管理本地 ClickHouse 版本
- 启动和管理本地 ClickHouse 服务器
- 运行和管理本地 Postgres 实例
- 在 ClickHouse 服务器上执行查询
- 设置 ClickHouse Cloud 并创建由云端托管的 ClickHouse 集群
- 创建和管理 ClickHouse Cloud Postgres 服务
- 管理 ClickHouse Cloud 资源
- 创建和管理用于数据摄取的 ClickPipes (S3、Kafka、Kinesis、Postgres、MySQL、MongoDB、BigQuery)
- 将官方 ClickHouse agent 技能安装到受支持的代码智能体中
- 将本地 ClickHouse 开发推送到云端
clickhousectl 可帮助开发者和 AI 智能体使用 ClickHouse 进行开发。
安装
快速安装
~/.local/bin/clickhousectl。为方便使用,还会自动创建一个 chctl 别名。
要求
- macOS (aarch64、x86_64) 或 Linux (aarch64、x86_64)
- Cloud 命令需要 ClickHouse Cloud API 密钥
本地
安装和管理 ClickHouse 版本
clickhousectl 会从 builds.clickhouse.com 下载 ClickHouse 二进制文件;如果该站点没有可用构建,则会回退到 packages.clickhouse.com (Linux) 或 GitHub Releases (macOS) 。
local use 还会在 ~/.local/bin/clickhouse 创建一个指向所选版本二进制文件的符号链接,从而让普通的 clickhouse 命令 (例如 clickhouse local、clickhouse client) 可通过 PATH 直接使用。传入 --no-global 可跳过此步骤。如果该路径处已存在普通文件,则会保留原状并发出警告。对当前启用的默认版本执行 local remove 也会清除此符号链接。
ClickHouse 二进制文件存储
~/.clickhouse/ 中:
初始化项目
init 会在你当前的工作目录中初始化适用于 ClickHouse 和 Postgres 项目文件的标准文件夹结构。此步骤是可选的;如果你愿意,也可以使用自己的文件夹结构。
它会创建以下结构:
执行查询
创建和管理 ClickHouse 服务器
.clickhouse/servers/<name>/data/ 下拥有各自独立的数据目录。
--name,第一个服务器的名称为 “default”。如果 “default” 已在运行,则会生成一个随机名称 (例如 “bold-crane”) 。如果需要可反复启动/停止的固定标识,请使用 --name。
**端口:**默认端口为 HTTP 8123 和 TCP 9000。如果这些端口已被占用,系统会自动分配空闲端口并在输出中显示。使用 --http-port 和 --tcp-port 可显式指定端口。
**全局服务器管理:**将 --global 与 list、stop 和 stop-all 一起使用,即可在整个系统范围内跨所有项目执行操作。server list --global 会显示所有正在运行的 ClickHouse 服务器,并包含一个 Project 列,用于标明每个服务器所属的目录。
本地服务器的自定义配置文件
~/.clickhouse/configs/,并在启动服务器时按名称应用:
config.d) ,因此它只需包含你想更改的设置,无需提供完整的配置。文件可以是 .xml、.yaml 或 .yml,你可以按名称引用它们,带或不带扩展名均可。
项目本地数据目录
.clickhouse/ 内:
clickhousectl local server remove <name> 可永久删除某个服务器的数据。
运行本地 Postgres
clickhousectl 还可以运行和管理本地 Postgres 实例。本地 Postgres 基于 Docker,因此必须先安装并启动 Docker。每个实例通过名称和主版本号进行标识,因此可以让多个 Postgres 版本并行运行,并分别使用独立的数据目录。
身份验证
clickhousectl cloud auth signup 会在浏览器中打开注册页面。
API 密钥/Secret (推荐)
.clickhouse/credentials.json 中 (仅当前项目) 。
你也可以使用环境变量,可以在你的会话中导出:
.env 文件里:
OAuth 登录
.clickhouse/tokens.json (仅限当前项目目录) 。
OAuth 访问当前仅为 只读,并且可访问 你所属的所有组织。如果需要写入权限,或希望将命令行客户端限定为单个组织,请改为创建一个有作用域的 API 密钥。
认证状态与退出登录
.clickhouse/credentials.json > 已导出的环境变量 > .env 文件 > OAuth 令牌。
调试所使用的凭证来源
cloud 命令添加 --debug,即可在命令运行前将解析后的凭证来源 (以及 API URL) 打印到 stderr。
Cloud
组织
服务
服务创建选项
| 选项 | 描述 |
|---|---|
--name | 服务名称 (必填) |
--provider | 云提供商:aws、gcp、azure (默认:aws) |
--region | 区域 (默认:us-east-1) |
--min-replica-memory-gb | 每个副本的最小内存 (GB) (8-356,且为 4 的倍数) |
--max-replica-memory-gb | 每个副本的最大内存 (GB) (8-356,且为 4 的倍数) |
--num-replicas | 副本数量 (1-20) |
--idle-scaling | 允许缩容为零 (默认:true) |
--idle-timeout-minutes | 最小空闲超时时长 (分钟) (>= 5) |
--ip-allow | 允许的 IP CIDR (可重复指定,默认:0.0.0.0/0) |
--backup-id | 用于恢复的 Backup ID |
--release-channel | 发布渠道:slow、default、fast |
--data-warehouse-id | 数据仓库 ID (用于只读副本) |
--readonly | 将服务设为只读 |
--encryption-key | 客户管理的磁盘加密密钥 |
--encryption-role | 用于磁盘加密的 Role ARN |
--enable-tde | 启用 Transparent Data Encryption |
--compliance-type | 合规要求:hipaa、pci |
--profile | 实例 profile (enterprise) |
--tag | 添加 GA 服务标签 (key 或 key=value) |
--enable-endpoint / --disable-endpoint | 启用或禁用 GA 服务端点 (当前为 mysql) |
--private-preview-terms-checked | 在需要时接受私有预览条款 |
--enable-core-dumps | 启用或禁用服务 core dump 收集 |
Query API 认证模式
cloud service query 是通过 HTTP 对云服务运行 SQL 的标准方式,无需 clickhouse 可执行文件,也无需服务密码。它支持两种凭据模式:
- API key 认证 (读 + 写 SQL) :当
cloud service query首次对某个尚未存储 key 的服务运行时,它会为该服务配置一个 Query API 端点,并创建一个绑定到该端点的专用 API key。该 key (keyId、keySecret和endpointId) 会存储在.clickhouse/credentials.json的service_query_keys.<service-id>下。该 key 的作用域仅限于单个服务,因此它可以对该服务执行读写操作 (SELECT、INSERT、DDL) ,但无法访问该组织中的任何其他服务。传入--no-auto-enable可让命令在不进行配置的情况下直接失败。 - OAuth (
cloud auth login) :查询会以你自己的身份运行,就像 Web SQL Console 一样。使用 OAuth 时,你在该服务上的 SQL 权限为 只读。不会配置或存储 Query API key。--no-auto-enable在此模式下不起作用。
cloud service start。设置 CLICKHOUSE_CLOUD_QUERY_HOST 可覆盖自动推导出的 Query API host。
查询端点管理
专用终结点管理
Backup 配置
Postgres 服务
clickhousectl 还可以创建和管理 ClickHouse Cloud Postgres 服务,其用法与上面的 ClickHouse 服务命令类似。
Postgres 服务创建选项
| 选项 | 描述 |
|---|---|
--name | 服务名称 (必填) |
--region | 区域,例如 us-east-1 (必填) |
--size | 实例规格,例如 m7i.2xlarge (必填) |
--provider | 云提供商 (默认:aws) |
--pg-version | 主版本:18、17 |
--ha-type | 高可用性:none、async、sync |
--tag | 资源标签 key 或 key=value (可重复) |
--pg-config-file | 包含 PgConfig 对象的 JSON 文件路径 |
--pg-bouncer-config-file | 包含 PgBouncerConfig 对象的 JSON 文件路径 |
Backup
ClickPipes
创建 ClickPipes
clickpipe create 下都有对应的子命令:
clickhousectl cloud clickpipe create <source> --help。
成员
邀请
键
活动
JSON 输出
--json 标志输出 JSON 格式的响应。
clickhousectl 会自动检测编码 agent 上下文 (Claude Code、Cursor、Codex、Gemini CLI、Goose、Devin,以及任何设置了标准 AGENT 环境变量的工具) ,并自动将 JSON 输出到 stdout,无需设置 --json。
退出代码
gh 命令行客户端的约定:
| 代码 | 含义 |
|---|---|
0 | 成功 |
1 | 错误 (不属于以下分类的任何情况) |
2 | 已取消 (用户中止) |
4 | 需要认证 (无凭据、401/403、仅限 OAuth 写入) |
技能
非交互式标志
| 标志 | 描述 |
|---|---|
--agent <name> | 为指定智能体安装技能 (可重复使用) |
--global | 使用全局作用域;如省略,则使用项目作用域 |
--all | 为所有受支持的智能体安装技能 |
--detected-only | 为系统中已检测到的受支持智能体安装技能 |
自行更新
clickhousectl 可以自行更新到最新版本: