增
INSERT INTO 数据库名.表名 [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ...
insert into t_order_mt values
(101,'sku_001',1000.00,'2021-08-01 12:00:00'),
(101,'sku_002',2000.00,'2021-08-01 12:00:00');
删
虽然clickhouse提供了删除和修改的功能但是其原理还是需要和alter语法相结合而且不支持事务。
删除表中某一元素
ALTER TABLE [数据库名.]表名 delete where 字段 = '属性值';
alter table t_order_smt delete where sku_id ='sku_001';
删除表中某一列
ALTER TABLE 表名 DROP COLUMN [IF EXISTS] 字段名
alter table t_order_mt drop column total_amount;
删除表
DROP TABLE 表名
drop table t_order_mt;
改
增加一列
ALTER TABLE 表名 ADD COLUMN 列名 字段类型 AFTER 已有的列
alter table t_order_rmt add column test String after sku_id;
添加注释
ALTER TABLE 表名 COMMENT 字段名 'xxxxxxxxxx'
alter table t_order_rmt comment column test '测试添加注释';
更改列的类型
ALTER TABLE 表名 MODIFY COLUNM 字段名 字段类型
alter table t_order_rmt modify column test int;
查
和mysql基本一致就不写了,具体的官网写的很详细了
https://clickhouse.tech/docs/zh/sql-reference/statements/select/
注意:
- 它支持各种join,但是join操作无法使用缓存,所以即使是两次相同的join语句,clickhouse也会视为两条新sql
- 不支持自定义函数
- 窗口函数也还在测试
数据导入
数据
csv形式
cat test.csv | clickhouse-client --query="insert into im_test format CSV";
自定义分割符
cat test.csv | clickhouse-client --format_csv_delimiter="|" --query="INSERT INTO im_test FORMAT CSV";
数据导出
clickhouse-client --query "select * from im_test where age=23" --format CSVWithNames> /root/test2.csv