clickhouse基本语法小计

个人学习笔记,谢绝转载!!!
原文:https://www.cnblogs.com/wshenjin/p/13068122.html


ClickHouse不支持的修改数据的查询:UPDATE, DELETE, REPLACE, MERGE, UPSERT, INSERT UPDATE。

建库删库

CREATE DATABASE [IF NOT EXISTS] db_name;
DROP DATABASE [IF EXISTS] db_name;

建表删表

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = engine;

  • DEFAULT expr – 默认值,用法与SQL类似。
  • MATERIALIZED expr – 物化表达式,被该表达式指定的列不能被INSERT,因为它总是被计算出来的。 对于INSERT而言,不需要考虑这些列。另外,在SELECT查询中如果包含星号,此列不会被查询。
  • ALIAS expr – 别名。
localhost :) CREATE TABLE t1 (ID UInt16,Name String, Birth Date) engine=TinyLog;

创建相同表结构:
CREATE TABLE [IF NOT EXISTS] [db.]table_name AS [db2.]name2 [ENGINE = engine]

localhost :) CREATE TABLE t2 AS t1 ENGINE = Memory;

查看表结构:
SHOW CREATE TABLE tb_name;
DESCRIBE TABLE tb_name;
DESC tb_name;

localhost :) SHOW CREATE TABLE t1;

┌─statement──────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE testdb.t1 (`ID` UInt16, `Name` String, `Birth` Date) ENGINE = TinyLog │
└────────────────────────────────────────────────────────────────────────────────────┘

localhost :) DESC t2;

┌─name──┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ ID    │ UInt16 │              │                    │         │                  │                │
│ Name  │ String │              │                    │         │                  │                │
│ Birth │ Date   │              │                    │         │                  │                │
└───────┴────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘

插入数据

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

localhost :) INSERT INTO t1 VALUES(1,'a','2020-02-02'),(2,'b','2020-03-03')(3,'c','2020-04-04'); 

INSERT INTO .... SELECT :

localhost :) INSERT INTO t2 SELECT * FROM t1;

localhost :) SELECT * FROM t2;

┌─ID─┬─Name─┬──────Birth─┐
│  1 │ a    │ 2020-02-02 │
│  2 │ b    │ 2020-03-03 │
│  3 │ c    │ 2020-04-04 │
└────┴──────┴────────────┘

修改表结构

ALTER只支持MergeTree、Merge和Distributed引擎的表

ALTER TABLE [db].name [ON CLUSTER cluster] ADD|DROP|MODIFY COLUMN ...

  • ADD COLUMN – 向表中添加新列
  • DROP COLUMN – 在表中删除列
  • MODIFY COLUMN – 更改列的类型

先新建一张MergeTree表并插入数据

localhost :) CREATE TABLE t3 (ID UInt16,Name String, Birth Date) engine=MergeTree(Birth, (ID, Name), 8192);

localhost :) INSERT INTO t3 SELECT * FROM t1;

添加一个Age字段

localhost :) ALTER TABLE t3 ADD COLUMN Age UInt8;

localhost :) DESC t3;

┌─name──┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ ID    │ UInt16 │              │                    │         │                  │                │
│ Name  │ String │              │                    │         │                  │                │
│ Birth │ Date   │              │                    │         │                  │                │
│ Age   │ UInt8  │              │                    │         │                  │                │
└───────┴────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
 
localhost :) SELECT * FROM t3;

┌─ID─┬─Name─┬──────Birth─┬─Age─┐
│  2 │ b    │ 2020-03-03 │   0 │
└────┴──────┴────────────┴─────┘
┌─ID─┬─Name─┬──────Birth─┬─Age─┐
│  1 │ a    │ 2020-02-02 │   0 │
└────┴──────┴────────────┴─────┘
┌─ID─┬─Name─┬──────Birth─┬─Age─┐
│  3 │ c    │ 2020-04-04 │   0 │
└────┴──────┴────────────┴─────┘

修改字段类型

localhost :) ALTER TABLE t3 MODIFY COLUMN Age UInt16;

localhost :) DESC t3;

┌─name──┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ ID    │ UInt16 │              │                    │         │                  │                │
│ Name  │ String │              │                    │         │                  │                │
│ Birth │ Date   │              │                    │         │                  │                │
│ Age   │ UInt16 │              │                    │         │                  │                │
└───────┴────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘

删除字段

localhost :) ALTER TABLE t3 DROP COLUMN Age;

localhost :) DESC t3;

┌─name──┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ ID    │ UInt16 │              │                    │         │                  │                │
│ Name  │ String │              │                    │         │                  │                │
│ Birth │ Date   │              │                    │         │                  │                │
└───────┴────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘

数据导入导出

导出CSV:

[root@ ~]# clickhouse-client  --password 123456  --database testdb  --query="select * from t1 format CSV;" > t.csv 
[root@ ~]# echo "select * from t1 format CSV" | clickhouse-client  --password 123456  --database testdb  > t.csv

从CSV导入:

[root@ ~]# cat t.csv | clickhouse-client  --password 123456  --database testdb  --query="insert into t1 FORMAT CSV" 
[root@ ~]# clickhouse-client  --password 123456  --database testdb  --query="insert into t1 FORMAT CSV"  < t.csv 
 

--format_csv_delimiter="|" ,指定导入导出的分隔符

参考

https://www.jianshu.com/p/74eb7747210a
https://www.cnblogs.com/dflmg/p/11464748.html

原文地址:https://www.cnblogs.com/wshenjin/p/13068122.html