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