clickhouse数据库操作
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 版权协议,转载请附上原文出处链接和本声明。