?進入正文前,感謝寶子們訂閱專題、點贊、評論、收藏!關注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 │└────┴──────┴─────┘#更新姓名為 張三的年齡為 22node1 :) 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 ,執行引擎為MergeTreenode1 :) create table t_csv (id UInt8,name String,age UInt8) engine = MergeTree order by id;#在ClickHouse客戶端準備數據文件 csvdata 寫入以下數據vim /root/csvdata1,張三,182,李四,193,王五,204,馬六,215,田七,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 result1|"張三"|182|"李四"|193|"王五"|204|"馬六"|215|"田七"|22
👨?💻如需博文中的資料請私信博主。