clickhouse常用操作命令

本文档总结了ClickHouse的基本操作,包括客户端参数、多行查询、SQL语法、CSV数据导入导出、分区管理等。还介绍了如何忽略导入错误、查看表大小、执行SQL文件、监控后台进程及结束查询等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在日常使用clickhouse中,会用到很多命令,特此整理记录一下。以下大部分内容都来自clickhouse_中文文档.pdf。
文档链接:https://pan.baidu.com/s/1Ai33BE6jClIs9kMDElv5Yg 提取码:pp7h

基本操作

在我们日常使用clickhouse中,用的最多的应该就是客户端相关的一些操作了,以下就是客户端的一些基本用法。

客户端常用参数

--host, -h -– 服务端的 host 名称, 默认是 'localhost'。 您可以选择使⽤ host 名称或者 IPv4 或 IPv6 地址。 
--port – 连接的端⼝,默认值: 9000。注意 HTTP 接⼝以及 TCP 原⽣接⼝是使⽤不同端⼝的。 
--user, -u – ⽤户名。 默认值: default。 
--password – 密码。 默认值: 空字符串。 
--query, -q – ⾮交互模式下的查询语句. 
--database, -d – 默认当前操作的数据库. 默认值: 服务端默认的配置 (默认是 default )。 
--multiline, -m – 如果指定,允许多⾏语句查询(Enter 仅代表换⾏,不代表查询语句完结)。 
--multiquery, -n – 如果指定, 允许处理⽤逗号分隔的多个查询,只在⾮交互模式下⽣效。 
--format, -f – 使⽤指定的默认格式输出结果。 
--vertical, -E – 如果指定,默认情况下使⽤垂直格式输出结果。这与 '--format=Vertical' 相同。在这种格式中,每个值都在单独的⾏上打印,这种⽅式对显示宽表很有帮助。 
--time, -t – 如果指定,⾮交互模式下会打印查询执⾏的时间到 'stderr' 中。 
--stacktrace – 如果指定,如果出现异常,会打印堆栈跟踪信息。 
-config-file – 配置⽂件的名称。
	```

## 客户端登录
```bash
clickhouse-client --user xxxx  --password xxxx
clickhouse-client -u xxxx  --password xxxx

多行查询

clickhouse-client -m
clickhouse-client --multiline

如果 multiline 没有指定(默认没指定):为了执⾏查询,按下 Enter 即可。查询语句不是必须使⽤分号结尾。如果需要写 ⼀个多⾏的查询语句,可以在换⾏之前输⼊⼀个反斜杠 \ ,然后在您按下 Enter 键后,您就可以输⼊当前语句的下⼀⾏查询 了。

如果 multiline 指定了:为了执⾏查询,需要以分号结尾并且按下 Enter 键。如果⾏末没有分号,将认为当前语句并没有输 ⼊完⽽要求继续输⼊下⼀⾏。 若只运⾏单个查询,分号后⾯的所有内容都会被忽略。

可以指定 \G 来替代分号或者在分号后⾯,这表示 Vertical 的格式。在这种格式下,每⼀个值都会打印在不同的⾏中,这 种⽅式对于宽表来说很⽅便。这个不常⻅的特性是为了兼容 MySQL 命令⽽加的。

常用的sql语法

<
### 关于 ClickHouse 命令使用指南 ClickHouse 提供了一系列丰富的命令用于管理和操作数据,这些命令可以通过命令行工具 `clickhouse-client` 或者 HTTP 接口来执行。以下是几个常用的命令及其说明: #### 启动客户端并连接到服务器 要启动 ClickHouse 客户端并与服务器建立连接,可以运行如下命令: ```bash clickhouse-client --host=your_host --port=9000 --user=default --password=secret ``` 这条命令指定了主机名、端口号以及认证信息[^1]。 #### 显示所有数据库 为了查看当前实例中存在的全部数据库列表,可输入以下指令: ```sql SHOW DATABASES; ``` #### 创建新表结构 创建一张新的表格时,需定义其名称、字段属性及引擎类型等参数。例如下面的例子展示了如何构建一个简单的日志记录表: ```sql CREATE TABLE log_table ( event_date Date, level Enum('TRACE' = 1, 'DEBUG' = 2, 'INFO' = 3, 'WARN' = 4, 'ERROR' = 5), message String ) ENGINE = MergeTree() ORDER BY (event_date); ``` #### 插入数据至指定位置 向已存在的表里添加单条或多条记录可通过 INSERT INTO 语句完成。这里给出了一种方式用来加载本地文件中的 CSV 数据集进入目标表中: ```sql INSERT INTO mytable FORMAT CSV SETTINGS input_format_csv_skip_first_lines = 1 SELECT * FROM file('/path/to/data.csv', 'CSV'); ``` #### 查询特定条件下的结果集 当需要检索满足一定约束的数据项时,则应该采用 SELECT ... WHERE 的形式编写 SQL 表达式。比如获取某一天内的错误级别以上的消息: ```sql SELECT * FROM log_table WHERE event_date >= toDate('2023-07-01') AND level IN ('WARN', 'ERROR') ORDER BY event_date DESC LIMIT 100; ``` #### 删除不再使用的对象 如果想要移除某个无用的数据库或者清空整个集合的内容,那么 DROP 和 TRUNCATE 就派上了用场。注意这两者的区别在于后者仅清除数据而不影响元数据。 ```sql -- 清理整张表的数据但保留架构不变 TRUNCATE TABLE IF EXISTS old_data; -- 彻底删除整个 database 及其所含有的任何资源 DROP DATABASE IF EXISTS deprecated_db CASCADE; ``` 上述只是部分基础性的命令演示,在实际应用过程中还会有更多高级特性和优化技巧等待探索。对于更详细的指导手册建议查阅官方文档获得最新最权威的信息源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值