一、问题描述
- 系统用到clickhouse、mysql数据库。有份重要数据存在clickhouse中,客户反馈想删掉某个时间段之前的所有历史数据,由于无法通过平台界面删除,只能通过命令行进入数据库删除。
- 有时调试、观察程序运行时,也需要删除某些数据。当然可以用DataGrip等数据库管理工具,但当没有此工具时,也只能通过命令行删除,因此掌握常用数据库的命令 是非常有必要的。
二、解决方案
确定clickhouse服务器开启后,使用clickhouse-client连接,接下来就可以根据自己的需求操作clickhouse数据了。
systemctl status clickhouse-server
clickhouse-client --password
show databases;
# 切换数据库
use data;
show tables;
select * from table1;
# 删除table1表中某个时间之前的数据
alter table table1 delete where createDate<'2023-09-19 10:59:08';
三、clickhouse常用命令
1.clickhouse服务的启动与停止(shell命令)
#服务启动
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
#服务重启
systemctl restart clickhouse-server 或 service clickhouse-server restart
#开启服务
systemctl start clickhouse-server
#停止服务
systemctl stop clickhouse-server
#查看服务状态
systemctl status clickhouse-server
#click-client连接
clickhouse-client --password
2.常用SQL语句
#查看版本
select version();
# 查看数据库
show databases;
# 删除数据库
drop database xx;
# 切换数据库,clickhouse实例的默认数据库:default
use default;
# 查看数据库下的表
show tables;
# 删除表
drop table table_name [on cluster default];
# 创建数据库
create database if not exists database_test on cluster default;
# 注意:1)on cluster cluster_name;这个指令使得操作能在集群范围内的节点都生效。 2)创建表、删除表时注意确认是否在集群所有节点创建,确保物理表与分布式表节点一致。
# 删除数据
alter table table_name delete [where condition];
# 清空表
truncate table table_name on cluster default;
# 更新语句
alter tavle table_name update count=1000 where name='cd';