一、简介

进入ClickHouse安装目录下的bin目录下,执行如下命令:

./clickhouse-client --help

执行结果(只列举常用的参数):

--host, -h        – 服务端的 host 名称, 默认是 'localhost'。 您可以选择使⽤ host 名称或者 IPv4 或 IPv6 地址。 
--port            – 连接的端⼝,默认值: 9000。注意 HTTP 接⼝以及 TCP 原⽣接⼝是使⽤不同端⼝的。 
--user, -u        – ⽤户名。 默认值: default。 
--password        – 密码。 默认值: 空字符串。 
--query, -q       – ⾮交互模式下的查询语句. 
--database, -d    – 默认当前操作的数据库. 默认值: 服务端默认的配置 (默认是 default )。 
--multiline, -m   – 如果指定,允许多⾏语句查询(Enter 仅代表换⾏,不代表查询语句完结)。 
--multiquery, -n  – 如果指定, 允许处理⽤逗号分隔的多个查询,只在⾮交互模式下⽣效。 
--format, -f      – 使⽤指定的默认格式输出结果。 
--vertical, -E    – 如果指定,默认情况下使⽤垂直格式输出结果。这与 '--format=Vertical' 相同。在这种格式中,每个值都在单独的⾏上打印,这种⽅式对显示宽表很有帮助。 
--time, -t        – 如果指定,⾮交互模式下会打印查询执⾏的时间到 'stderr' 中。 
--stacktrace      – 如果指定,如果出现异常,会打印堆栈跟踪信息。 
-config-file      – 配置⽂件的名称。
...

二、常用命令

1、连接命令

./clickhouse-client -h [ip] --port [端口号] -u [用户名] --password [密码]

ClickHouse默认端口号为:9000
ClickHouse默认用户名为:default
ClickHouse默认密码为:空

如果ClickHouse的端口号、用户名、密码都使用的默认值,那么可用如下连接命令:

./clickhouse-client

2、SQL语法

(1)查看数据库列表

show databases;

(2)查看当前使用的数据库

select currentDatabase();

(3)查看数据库中表列表

show tables;

(4)创建数据库

create database test;

(5)创建表

-- 创建一个表(建表的时候指定数据类型,建表的时候一定要指定表引擎,要么使用-m,要么使用反斜杠,不然不能写多行)
create  table if not exists test.t1 ( \
	id UInt16,name String \
) ENGINE = Memory;

(6)查看表结构

desc test.t1;

(7)删除表

drop table if exists test.t1;

(8)删除库

drop database test;

(9)清空数据

truncate table test.t1;

(10)插入数据

insert into test.t1 (id, name) values (1, 'zhangsan'), (2, 'lishi');

(11)查询

select * from test.t1;

(12)重命名表

rename table tab1 to tab2;

(13)添加列

alter table tbl add column cost UInt32 default 0;

(14)查看分区信息

select partition, name, active from system.parts WHERE table = 't1';

(15)删除分区

alter table xxx drop partition '2018-08-08';

默认情况下,Clickhouse 不允许删除分区或表的大小大于 50GB 的分区或表。可以通过修改server的配置文件来永久配置,也可以临时设置一下来删除而不用重启服务。

永久配置:更改config.xml配置文件。

<!-- <max_table_size_to_drop>0</max_table_size_to_drop> -->
<!-- <max_partition_size_to_drop>0</max_partition_size_to_drop> -->	 

0表示不限制,或者你可以设置为你想限制的最大的大小。


(16)查看后台进程

-- 这个命令和mysql是一样的
show processlist
-- 如果进程太多,也可用通过查询系统表 processes,
select * from system.processes
-- 指定主要关心字段
select user,query_id,query,elapsed,memory_usage from system.processes;

(17)杀死后台进程

--  通过上面指令获取到进程相关信息后,可以用query_id条件kill进程
KILL QUERY WHERE query_id='2e33f3ae-f7e1-4c10-af8c-af96aff20837' 
-- 杀死default用户下的所有进程
KILL QUERY WHERE user='default'

3、导入csv数据

cat xxx.csv | clickhouse-client --query="insert into tablename format CSV"

指定分隔符:cat xxx.csv | clickhouse-client --format_csv_delimiter=“|” --query=“insert into tablename format CSV”

如果csv文件有列名,使用CSVWithNames,解析时,第一行会被直接忽略。

注意:query后面的=不能有空格。


4、导入数据时忽略错误

./clickhouse-client --input_format_allow_errors_num=100000 --input_format_allow_errors_ratio=0.2
  • --input_format_allow_errors_num:是允许的错误数;

  • --input_format_allow_errors_ratio:是允许的错误率,范围是 [0-1];


5、导出csv数据

./clickhouse-client --query="select * from test.t1 format CSV" > test.csv

6、执行sql文件

./clickhouse-client --user xxx --password xxx --multiquery <  /root/temp.sql

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐