首页/数据/NoSQL 速查/clickhouse-client 连接与执行
ClickHouse56 条

clickhouse-client 连接与执行

clickhouse-client 是原生命令行客户端:连接用 --host/--port/--user/--password/--database,-q 直接执行语句,支持从标准输入导入与指定输出格式。

NoSQL 速查数据更新于 2026-10-13

clickhouse-client 是什么

clickhouse-client 是 ClickHouse 的原生命令行客户端,走 9000 端口与本机或远端服务通信,用来交互式执行 SQL、从标准输入批量导入、按指定格式导出。另有一个基于 HTTP 的 8123 端口,用 curl 就能验证服务是否正常,适合调试与轻量集成。

基本信息

常用参数--host、--port 9000、--user、--password、--database、-q
批量与格式--multiquery 读取多条语句,--format 指定输出格式如 JSONEachRow
导入方式用 FORMAT 子句从标准输入读数据,如 INSERT INTO t FORMAT CSV
HTTP 方式curl 'http://127.0.0.1:8123/?query=SELECT%201'
访问控制default 用户的密码与来源限制在 users.xml 或 SQL 化用户管理中配置

典型使用场景

  • 交互式排查:连上实例手工执行 SQL 看结果
  • 脚本化执行:用 -q 在 shell 与定时任务里跑单条语句
  • 批量导入:把 CSV、TSV 文件通过标准输入灌进表
  • 导出数据:指定输出格式供下游程序解析
  • 健康检查:用 HTTP 接口或 SELECT 1 验证服务可用

常用命令

常用命令
# 交互式连接(默认端口 9000)
clickhouse-client --host 127.0.0.1 --port 9000 --user default --password

# 直接执行单条语句
clickhouse-client -q "SELECT version(), uptime()"

# 指定输出格式,便于脚本解析
clickhouse-client --query "SELECT count() FROM system.parts" --format JSONEachRow

# 从标准输入批量导入 CSV
clickhouse-client --query "INSERT INTO events FORMAT CSV" < events.csv

# HTTP 接口快速验证服务状态
curl "http://127.0.0.1:8123/?query=SELECT%201"

连接方式对照

方式端口适用场景
clickhouse-client9000 原生协议交互排查与脚本执行
HTTP 接口8123调试、轻量集成、穿透代理
--multiquery同客户端一次提交多条语句
标准输入导入同客户端批量灌入本地文件
9000 与 8123 是完整的数据访问入口,不要直接暴露到公网;生产环境应为 default 用户设置密码并限制来源地址,或改用独立的业务账号。
客户端与 HTTP 接口共用同一套账号体系:用 --user 指定业务账号便于做权限隔离,也可以按账号限制来源地址、并发查询数与单个查询的最大执行时间。
客户端默认连本机 9000 端口,跨机器访问必须显式写 --host;容器与云环境里常只放行了 8123 或只放行了 9000,连不上时先确认走的是哪条通道。

易错点

  • 用管道导入数据时忘了在语句里写 FORMAT,客户端按默认格式解析标准输入会直接失败
  • 集群里直连某台机器的 9000 端口不等于访问整个集群:本地表只含该节点数据,跨分片查询必须走分布式表
  • 把 9000 或 8123 暴露到公网又保留无密码的默认用户,等同于把整个实例交给外部
  • 在脚本里用 -q 直接拼接变量而不做校验,容易造成注入或误删,运维脚本同样要处理输入合法性

数据来源与参考

  • ClickHouse Docs: clickhouse-client
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌