一、实验环境版本说明
clickhouse-client 是ClickHouse的官方命令行客户端工具,用于连接ClickHouse服务器并执行SQL查询。本实验环境是在虚拟机下进行测试、验证和说明,系统环境信息如下:
- 操作系统:ctyunos 23.01
- clickhouse版本:25.12.1.649
- clickhouse-client版本:25.12.1.649
二、ctyunos系统安装clickhouse
1、安装yum扩展依赖包
root@ywserver \~# yum install -y yum-utils
2、添加clickhouse repo源
root@ywserver \~# yum-config-manager --add-repo
3、安装clickhouse、clickhouse-client
root@ywserver \~# yum install -y clickhouse clickhouse-client
4、启动clickhouse
root@ywserver \~# systemctl start clickhouse
三、使用示例
1、交互式查询
直接输入clickhouse-client命令,默认没有设置default账户密码,直接登录数据库。# 在交互模式下可以使用以下命令:
-- 切换数据库 : USE database_name;
-- 显示查询历史(按上下键)
-- 自动补全(按Tab键)
-- 多行查询(以分号结尾或使用\G)

2、指定主机和端口
实验--host参数可以连接本地或者远程clickhouse数据库。
root@ywserver clickhouse-server# clickhouse-client --host 127.0.0.1 --port 9000
3、使用SSL加密连接
可以使用SSL加密连接,前提是配置了SSL加密协议并监听了相关端口。
root@ywserver clickhouse-server# clickhouse-client --host=example.com --port=9440 --secure
4、使用用户名密码
root@ywserver clickhouse-server# clickhouse-client --user=default --password=your_password
5、 或交互式输入密码
root@ywserver clickhouse-server# clickhouse-client --user=default --ask-password
6、使用配置文件中的凭据
root@ywserver clickhouse-server# clickhouse-client --config-file=/etc/clickhouse-client/config.xml
7、查询系统信息
root@ywserver clickhouse-server# clickhouse-client --query="SELECT version()"
25.12.1.649
root@ywserver clickhouse-server# clickhouse-client --query="SELECT now()"
2025-12-28 09:55:18
root@ywserver clickhouse-server# clickhouse-client --query="SELECT hostName()"
ywserver
8、执行多条件查询
root@ywserver clickhouse-server# clickhouse-client --multiquery --query="
CREATE DATABASE IF NOT EXISTS test;
CREATE TABLE test.example (id Int32, name String) ENGINE = MergeTree ORDER BY id;
INSERT INTO test.example VALUES (1, 'Alice'), (2, 'Bob');
SELECT * FROM test.example;
"
1 Alice
2 Bob
9、指定输出格式
CSV格式
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.databases" --format=CSV
JSON格式
clickhouse-client --query="SELECT name, engine FROM system.databases" --format=JSON
TSV格式(适合管道处理)
clickhouse-client --query="SELECT * FROM system.tables LIMIT 5" --format=TSV
垂直格式(查看宽表时有用)
clickhouse-client --query="SELECT * FROM system.settings WHERE name LIKE '%timeout%'" --format=Vertical
10、执行文件中的查询
root@ywserver clickhouse-server# clickhouse-client < query.sql

11、将查询结果保存到文件
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.processes" --format=CSV > processes.csv
12、管道操作
与其他命令结合使用
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.errors" | grep -i timeout
统计数据
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.query_log WHERE event_date = today()" | wc -l
53
转换为JSON处理,需要安装jq命令
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.metrics" --format=JSON | jq '.data'
13、显示查询执行时间
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM big_table LIMIT 1000000" --time
0.001
Received exception from server (version 25.12.1):
Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Unknown table expression identifier 'big_table' in scope SELECT * FROM big_table LIMIT 1000000. (UNKNOWN_TABLE)
(query: SELECT * FROM big_table LIMIT 1000000)
14、数据导入
导入数据
root@ywserver clickhouse-server#cat data.csv | clickhouse-client --query="INSERT INTO my_table FORMAT CSV"
从压缩文件导入
root@ywserver clickhouse-server#zcat data.csv.gz | clickhouse-client --query="INSERT INTO my_table FORMAT CSV"
15、监控和诊断
查看当前连接
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.processes"
查看系统指标
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.metrics"
查看异步指标
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.asynchronous_metrics"
查看事件
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.events"
查看服务器设置
root@ywserver clickhouse-server# clickhouse-client --query="SELECT * FROM system.settings WHERE changed"
四、参数简介
| 参数分类 | 参数 | 参数说明 |
|---|---|---|
| 连接参数 | --host, -h | # 服务器主机名(默认:localhost) |
| 连接参数 | --port | # 端口号(默认:9000) |
| 连接参数 | --user, -u | # 用户名(默认:default) |
| 连接参数 | --password | # 密码 |
| 连接参数 | --ask-password | # 交互式输入密码 |
| 连接参数 | --secure | # 使用SSL加密连接 |
| 查询参数 | --query, -q | # 执行查询语句 |
| 查询参数 | --database, -d | # 指定默认数据库 |
| 查询参数 | --multiline, -m | # 允许多行查询 |
| 查询参数 | --multiquery, -n | # 允许多个查询用分号分隔 |
| 查询参数 | ---format | # 指定输出格式 |
| 查询参数 | --time | # 显示查询执行时间 |
| 输出格式参数 | --format=Pretty | # 美观的表格格式(默认) |
| 输出格式参数 | --format=CSV | # CSV格式 |
| 输出格式参数 | --format=JSON | # JSON格式 |
| 输出格式参数 | --format=TSV | # 制表符分隔 |
| 输出格式参数 | --format=Vertical | # 垂直显示 |
| 输出格式参数 | --format=Null | # 不输出结果 |
| 其他参数 | --help | # 显示帮助信息 |
| 其他参数 | --version | # 显示版本信息 |
| 其他参数 | --progress | # 显示查询进度 |
| 其他参数 | --echo | # 执行前打印查询语句 |
| 其他参数 | --stacktrace | # 发生错误时显示堆栈跟踪 |
| 其他参数 | --log-level | # 设置日志级别 |