连接clickhouse

​mysql -h 127.0.0.1 -P 9004 -u user_name -ppassword​

​clickhouse-client -uuser_name --password password --port 9000 -h 127.0.0.1​

创建表

CREATE TABLE part_v1 (ID String,URL String,EventTime Date)    
ENGINE = MergeTree()
PARTITION BY toYYYYMMDD(EventTime)
ORDER BY (ID, intHash32(ID))
TTL EventTime + toIntervalDay(19)
SAMPLE BY intHash32(ID);

SAMPLE BY 采样,采样键必须在主键中也要定义

插入数据

​INSERT INTO db.table VALUES (1, 1, '2020-08-11', 1)​

修改数据,不能改主键、分区键

​ALTER table db.table update age = 12 where ID in (select ID from test.part_v2 where EventTime='2019-01-01')​

只有mergetree、merge、distributed 等支持alter

增加字段

​ALTER table db.table add column if not exists age UInt8 default 0 AFTER URL​

查看分区信息

​select table,partition,path from system.parts where table='part_v1'​

删除分区

​ALTER table db.table DROP PARTITION field_date_1;​

复制分区数据

​ALTER TABLE db.table REPLACE PARTITION 1 FROM 2​

删除数据,后台异步执行

​ALTER table db.table delete where id >=1; ​删除的任务会保存到mutations表中,id_done=1表示执行完毕

​select database, table, mutation_id,block_numbers.number as num,is_done from system.mutations​

修改字段类型

​ALTER TABLE db.table MODIFY COLUMN age String​

修改备注

​ALTER TABLE db.table COMMENT COLUMN ID '主键ID';​

删除字段

​ALTER TABLE db.table DROP COLUMN age​

查看zk存储的数据

​select * from system.zookeeper where path='/clickhouse/tables/2-2/test_replication/replicas/test_replication_1';​

查看表结构

​DESC db.table​

​SHOW CREATE TABLE db.table​

重命名表

​RENAME TABLE db.table to db.newtable​

删除表

​TRUNCATE TABLE db.table​

查看字典

​select name,type,key,attribute.names,attribute.types from system.dictionaries​

仅支持MergeTree引擎。会进行ttl清理、分区合并等

​optimize table test.ttl_table_v1;​

可以修改ttl,新增ttl,但不能取消ttl

​alter table test.ttl_table_v1 modify column code String TTL create_time + INTERVAL 1 DAY;​

ttl启停止

​SYSTEM START TTL MERGES;​​​​SYSTEM STOP TTL MERGES;​

Buffer表,满足指定条件会将buffer表中数据刷到指定表

如果写入Mergetree并发很高,可能会导致Mergetree表的合并速度慢于写入速度,引入Buffer表来缓解这类问题

​create table test.buffer_to_memory_1 as test.memory_1 engine = Buffer(test, memory_1, 16, 10 ,100, 1000, 1000000, 10000000, 100000000);​

query_log

​select * from system.query_log order by event_time desc limit 10;​

trace_log

​select * from system.trace_log where query_id = '29786b1e-9380-4373-90b8-9fc68ef89441';​

查询正在进行执行的sql操作

​SHOW PROCESSLIST​

从mysql中导入数据

​insert into test.test_order select * from mysql('127.0.0.1:3307','test','test_order','root','123456');​

argMax 取最大值,day最大的那行数据的id

​select argMax(day, id) from test.daily3;​

json格式输出字段

​select batch_id,concat('[',toString(groupUniqArray(id)),']')json from coupon_day_local group by batch_id;​

格式化返回结果

SELECT * FROM test FORMAT JSONSELECT * FROM test FORMAT CSVSELECT * FROM test FORMAT TSKVSELECT * FROM test FORMAT XML