linux服务器通过命令行操作clickhouse

通过XShell连上了CK所在的服务器后的部分操作:
1.查看ck的集群名称

cd /etc/clickhouse-server/
ls
vi metrika.xml

2.如何进入CK的SQL输入页面(也就是登录后端)

clickhouse-client --port=19000 -h 127.0.0.1 -m

3.进入CK后台后如何查看数据库名、表名、指定使用哪个数据库

查看数据库名  show databases;
查看表名  show tablenames;
指定使用哪个数据库  use databasename;

4.在CK里清除本地表和分区表的数据(在一个机器上执行该命令,因为加了on cluster,所以是对整个集群上的本地表进行了清除操作,集群表也会被清除)

truncate table databasename.tablename_local on cluster ck_cluster;

5.退出CK后端

按Ctrl+Z

6.xshell执行CK的sql脚本文件

clickhouse-client --port=19000 -h 127.0.0.1 -m < /filepath/filename.sql
# <  后的是SQL脚本在CK所在服务器上的存储路径和文件名,有些SQL脚本在服务器上显示是不带后缀 .sql的

7.通过XShell导出CK中表的数据到CSV文件中

clickhouse-client --port=19000 -h 127.0.0.1 -m --query="select * from databasename.tablename" > /filepath/filename.csv

# > 后的是新建的空的CSV文件在CK所在服务器上的存储路径和文件名,tablename是指需要导出数据的表的名字(指分布式表),分布式表相当于一个视图,是所有本地表的汇总。

8.通过XShell导入CSV格式的数据文件到CK中

clickhouse-client --port=19000 -h 127.0.0.1 --database="databasename" --query="insert into databasename.tablename FORMAT CSV" < /filepath/filename.csv

# < 后的是CSV文件在CK所在服务器上的存储路径和文件名,tablename是指需要导入数据的表的名字(指分布式表)

9.通过XShell查看CK的帮助页面

clickhouse-client -help

10.增加列

alter table databasename.tablename_local on cluster ck_cluster add column etltime Int64;
alter table databasename.tablename on cluster ck_cluster add column etltime Int64;

11.删除列

alter table databasename.tablename_local on cluster ck_cluster drop column etltime;
alter table databasename.tablename on cluster ck_cluster drop column etltime;

12.修改注释

alter table databasename.tablename_local on cluster ck_cluster comment column columnname '原注释' '新注释';
alter table databasename.tablename on cluster ck_cluster comment column columnname '原注释' '新注释';

13.修改数据类型

alter table databasename.tablename_local on cluster ck_cluster MODIFY column columnname 数据类型;
alter table databasename.tablename on cluster ck_cluster MODIFY column columnname 数据类型;

在CK中不可修改列名称,因为不支持;hive中的日期为string的到CK中不可转为Date,会报错,必须为string。

14.CK建表语句模板

create table if not exists databasename.tablename_local on cluster ck_cluster(
 hzzjlx string,
 hzzjlxmc Nullable(string),
 gszjlx string,
 gszjlxmc Nullable(string)
) ENGINE = MergeTree() ORDER BY (hzzjlx,gszjlx) SETTINGS index_granularity = 8192;
create table if not exists databasename.tablename on cluster ck_cluster as databasename.tablename_local ENGINE=Distributed(ck_cluster,databasename,tablename_local,rand());
 
# Nullable是允许该字段有空值存在,但是建立索引的列(sort列)不允许有空值存在,如果是分区表则再order by 前面加一个partition by(分区字段)

15.CK删表操作

drop table databasename.tablename_local on cluster ck_cluster;
drop table databasename.tablename on cluster ck_cluster;

版权声明:本文为Ysuzuran原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。