DDL(DDL:数据定义语言,通常是数据库管理系统的一部分,用于定义数据库的所有特性和属性,尤其是行布局、列定义、键列(有时是选键方法)、文件位置和存储策略。 )
包括命令:
一、Truncate语法
[ { database_name.[ schema_name ]. | schema_name . } ]
table_name
[ ; ]
二、参数
database_name
数据库的名称。
schema_name
表所属架构的名称。
table_name
要截断的表的名称,或要删除其全部行的表的名称。
/clickhouse/task_queue/ddl
一个节点创建表,会同步到各个节点
CREATE TABLE db.table [ON CLUSTER cluster] (…)
添加、删除、修改列
ALTER TABLE [db].table [ON CLUSTER cluster] ADD|DROP|MODIFY COLUMN …
rename 支持*MergeTree和Distributed
rename table db.table1 to db.table2 [ON CLUSTER cluster]
truncate table db.table;不支持Distributed引擎
二、delete/update 不支持Distributed引擎
ALTER TABLE [db.]table DELETE WHERE filter_expr…
ALTER TABLE [db.]table UPDATE column1 = expr1 [, …] WHERE …
三、分区表
按时间分区:
toYYYYMM(EventDate):按月分区
toMonday(EventDate):按周分区
toDate(EventDate):按天分区
按指定列分区:
PARTITION BY cloumn_name
对分区的操作:
alter table test1 DROP PARTITION [partition] #删除分区
alter table test1 DETACH PARTITION [partition]#下线分区
alter table test1 ATTACH PARTITION [partition]#恢复分区
alter table .test1 FREEZE PARTITION [partition]#备份分区
四、数据同步
采用remote函数
insert into db.table select * from remote(‘目标IP’,db.table,‘user’,‘passwd’)
csv文件导入clickhouse
cat test.csv | clickhouse-client -u user --password password --query=“INSERT INTO db.table FORMAT CSV”
同步mysql库中表
CREATE TABLE tmp ENGINE = MergeTree ORDER BY id AS SELECT * FROM mysql(‘hostip:3306’, ‘db’, ‘table’, ‘user’, ‘passwd’) ;
4) clickhouse-copier 工具
五、时间戳转换
select toUnixTimestamp(‘2018-11-25 00:00:02’) --DateTime转化为时间戳
注意:可以指定时区,例如:select toUnixTimestamp(‘2018-11-25 00:00:02’,‘Asia/Shanghai’)
select toDateTime(1543075202) --时间戳转化为DateTime
select toDateTime(‘2018-04-30 00:00:00’) --转化为DateTime的标准格式
结果:2018-04-30T00:00:00+00:00