• 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

  • 相关阅读:
    加密web.config
    SQL FOR XML
    SQL语句中拆分字段
    Units specified don't exist SHSUCDX can't install
    SQLSERVER与C#中数据类型的对应关系
    使用 FOR XML PATH 產生 XML 格式時,遇到 NULL 該如何處理?
    T_SQL的 FOR XML PATH 用法
    T-SQL with关键字
    Sqlserver获取行号
    win10以太网没有有效的ip配置
  • 原文地址:https://www.cnblogs.com/wshenjin/p/13068122.html
Copyright © 2020-2023  润新知