clickhouse数据库操作

一、基本操作

1.1、启动服务

sudo service clickhouse-server start

1.2、停止服务

sudo service clickhouse-server stop

1.3、客户端访问

clickhouse-client

1.4、查询正在进行执行的sql操作

SHOW PROCESSLIST

1.5、删除表

drop table 数据库名.数据表名;

1.6、删除数据

truncate table 数据库名.数据表名;

1.7、变更表名

RENAME TABLE test.原表名to test.新表名;

1.8、插入数据INSERT

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

1.9、增加表的列ALTER…ADD

ALTER TABLE [db].name [ONCLUSTER cluster] ADD COLUMN ...

1.10、删除列ALTER…DROP

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

1.11、查看表结构DESCRIBLE

DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format]

二.常用命令

2.1、创建数据库

创建数据库语法:

CREATE DATABASE [IF NOT EXISTS] db_name`

如果数据库db_name已经存在,则不会创建新的db_name数据库。

2.2、创建表

语法:

CREATE TABLE [IF NOT EXISTS][db.]table_name [ON CLUSTER cluster]

(name1 [type1] [DEFAULT|MATERIALIZED|ALIASexpr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],...) ENGINE = engine

2.1.1 创建一个名为test的表

CREATE TABLE test(userId Int64,  moveId Int64,  rating Float64, tm Int64) ENGINE = Log;

2.1.2 在数据库test中创建一个table_zmq 数据表

CREATE TABLE IF NOT EXISTS test.table_zmq ON cluster cluster_shardNum_replicasNum(
    'id' UInt64,
    'name' String,
    'time' UInt64,
    'age' UInt8,
    'flag' UInt8
)
ENGINE = MergeTree
PARTITION BY toDate(time/1000)
ORDER BY (id,name)
SETTINGS index_granularity = 8192

ENGINE:是表的引擎类型,最常用的MergeTree。还有一个Log引擎也是比较常用。MergeTree要求有一个日期字段,还有主键。Log没有这个限制。

2.3、create table时primary by与order by的区别

  • ORDER BY 决定了每个分区中数据的排序规则;
  • PRIMARY KEY 决定了一级索引(primary.idx);
  • ORDER BY 可以指代PRIMARY KEY, 通常只用声明ORDER BY 即可。

三、导入数据

3.1、导入制表符分隔的数据

第一种:

cat test.txt | clickhouse-client --query="INSERT INTO test.air_test FORMAT TabSeparated";

第二种:

cat /data/ZDGL/stateAnalysis/dmt_term_stateAnalysisALL202010.txt | clickhouse-client --query="INSERT INTO test.air_test FORMAT TSV";

3.2、导入CSV格式数据

cat /data/org/air/202010.csv | clickhouse-client --query="INSERT INTO test.air_test FORMAT CSV";

3.3、指定分割符导入

cat test.csv | clickhouse-client -u user --password password --format_csv_delimiter="|" --query="INSERT INTO db.tab1 FORMAT CSV";

3.4、加入最大分区数导入

加入–max_partitions_per_insert_block 10000设置最大分区数导入

cat /data/org/air/202010.txt | clickhouse-client --max_partitions_per_insert_block 10000 --query="INSERT INTO test.air_test.FORMAT TabSeparated";

3.5、跳过错误行导入

cat /data/org/air/202010.txt | clickhouse-client --input_format_allow_errors_num=1 --input_format_allow_errors_ratio=0.1 --query="INSERT INTO test.air——test FORMAT TabSeparated";

四、导出数据

例如,以CSV分隔符导出,操作如下:

clickhouse-client --query="select * from test.air_test limit 30 FORMAT CSV" > text.csv

版权声明:本文为qq_47346664原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>