文章目录
- 一、简介
- 二、常用命令
- 1、连接命令
- 2、SQL语法
- (1)查看数据库列表
- (2)查看当前使用的数据库
- (3)查看数据库中表列表
- (4)创建数据库
- (5)创建表
- (6)查看表结构
- (7)删除表
- (8)删除库
- (9)清空数据
- (10)插入数据
- (11)查询
- (12)重命名表
- (13)添加列
- (14)查看分区信息
- (15)删除分区
- (16)查看后台进程
- (17)杀死后台进程
- 3、导入csv数据
- 4、导入数据时忽略错误
- 5、导出csv数据
- 6、执行sql文件
一、简介
进入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