ClickHouse 命令彙總

shkstart發表於2022-01-17

ClickHouse 命令彙總
連線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

安裝clickhouse-client
訪問:
下載clickhouse-common-static、clickhouse-client 檔案進行安裝,可選擇20.5.4.40版本
上傳檔案到伺服器
執行命令

rpm -ivh clickhouse-common-static-20.5.4.40-2.x86_64.rpm
rpm -ivh clickhouse-client-20.5.4.40-2.noarch.rpm

建立表
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

刪除資料,後臺非同步執行
刪除的任務會儲存到mutations表中,id_done=1表示執行完畢

ALTER table db.table delete where id >=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 JSON SELECT * FROM test FORMAT CSV SELECT * FROM test FORMAT TSKV SELECT * FROM test FORMAT XML

版權宣告:本文為原創文章,轉載請附上原文出處連結及本宣告。下載相關影片學習資料到尚矽谷官方網站。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27721058/viewspace-2852580/,如需轉載,請註明出處,否則將追究法律責任。

相關文章