ClickHouse(二十二):Clickhouse SQL DML操作及导入导出数据

ClickHouse(二十二):Clickhouse SQL DML操作及导入导出数据_第1张图片

 进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容!

个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客

订阅:拥抱独家专题,你的订阅将点燃我的创作热情!

点赞:赞同优秀创作,你的点赞是对我创作最大的认可!

⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!

✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!


目录

1. Insert 插入

2. update 更新

​​​​​​​3. delete 删除

4. 向表中导入导出数据


DML:Data Manipulation Language,数据操纵语言。ClickHouse中DML语言包含插入、更新、删除数据操作,DML操作仅适用MergeTree引擎,不能针对主键、分区键、排序键进行DML操作,DML操作不支持事务,一旦执行成功会立刻生效。

1. Insert 插入

insert 向表中插入数据。

  • insert 语法:
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ...

或者

INSERT INTO [db.]table Select ...
  • 示例:
#创建表 t_insert ,这里使用MergeTree引擎

node1 :) create table t_insert (id UInt8 ,name String) engine = MergeTree() order by id ;



#向表 t_insert 中插入数据

node1 :) insert into t_insert values (1,'张三',18),(2,'李四',19);



#向表 t_insert 中插入数据

node1 :) insert into t_insert select * from t_insert;

​​​​​​​2. update 更新

由于ClickHouse针对的是OLAP业务分析,Update操作在ClickHouse中不会经常使用。这种更新效率低下。

  • update 更新操作语法:
ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr
  • 示例:
#创建表 t_update,使用MergeTree引擎

node1 :) create table t_update (id UInt8,name String,age UInt8) engine = MergeTree() order by id ;



#向表 t_update中插入如下数据

node1 :) insert into t_update values (1,'张三',18),(2,'李四',19)

┌─id─┬─name─┬─age─┐

│  1  │ 张三  │  18 │

│  2  │ 李四  │  19 │

└────┴──────┴─────┘



#更新姓名为 张三的年龄为 22

node1 :) alter table t_update update age = 22 where name = '张三';

┌─id─┬─name─┬─age─┐

│  1  │ 张三  │  22 │

│  2  │ 李四  │  19 │

└────┴──────┴─────┘

​​​​​​​3. delete 删除

由于ClickHouse针对的是OLAP业务分析,Delete操作与Update操作一样在ClickHouse中不会经常使用。这种删除效率低下。

  • delete 删除语法:
ALTER TABLE [db.]table [ON CLUSTER cluster] DELETE WHERE filter_expr
  • 示例:
#创建表 t_delete,使用MergeTree引擎

node1 :) create table t_delete (id UInt8,name String,age UInt8) engine = MergeTree() order by id ;



#向表 t_delete中插入以下数据

node1 :) insert into t_update values (1,'张三',18),(2,'李四',19)

┌─id─┬─name─┬─age─┐

│  1  │ 张三  │   18│

│  2  │ 李四  │  19 │

└────┴──────┴─────┘



#删除 张三 此条数据

node1 :) alter table t_delete delete where name = '张三';

┌─id─┬─name─┬─age─┐

│  2  │ 李四  │  19 │

└────┴──────┴─────┘

4. 向表中导入导出数据

ClickHouse中支持多种数据格式数据导入和导出,支持格式有ORC,Parquet,Avro,Protobuf,xml,json,csv等,具体操作参照官网:https://clickhouse.tech/docs/en/sql-reference/statements/alter/update/。下面以向表导入导出CSV格式数据为例操作:

  • 示例:
#创建表 t_csv ,执行引擎为MergeTree

node1 :) create table t_csv (id UInt8,name String,age UInt8) engine = MergeTree order by id;



#在ClickHouse客户端准备数据文件 csvdata 写入以下数据

vim /root/csvdata

1,张三,18

2,李四,19

3,王五,20

4,马六,21

5,田七,22

#导入数据,在ClickHouse-client中执行导入数据命令

[root@node1 ~]# clickhouse-client --format_csv_delimiter="," --query="INSERT INTO newdb.t_csv FORMAT CSV" < /root/csvdata



注意:--format_csv_delimiter 指定分隔符



#进入ClickHouse客户端查看表 t_csv中的数据

node1 :) select * from t_csv;



┌─id─┬─name─┬─age─┐

│  1  │ 张三  │  18  │

│  2  │ 李四  │  19  │

│  3  │ 王五  │  20  │

│  4  │ 马六  │  21  │

│  5  │ 田七  │   22 │

└────┴────┴─────┘



#导出数据,在ClickHouse-client中执行命令,将数据导入到result文件中

[root@node1 ~]# clickhouse-client --format_csv_delimiter="|" --query="select * from newdb.t_csv FORMAT CSV" > /root/result



#查看导出的结果数据

[root@node1 ~]# cat result

1|"张三"|18

2|"李四"|19

3|"王五"|20

4|"马六"|21

5|"田七"|22

‍如需博文中的资料请私信博主。


你可能感兴趣的:(大数据OLAP体系技术栈,clickhouse,sql,数据库,实时数仓,数据仓库,分布式数据库,大数据)