ClickHouse 简单使用(二)

摘要:
当连接到clickhouse服务器时,它将自动下载所需的驱动程序。注意,clickhousejdbc基于HTTP协议,clickhouse接受HTTP连接的端口是8123。6常见的sql语句ClickHouse在语法上类似于MySQL。
4 ClickHouse 启动和关闭

4.1 通过系统命令

启动

systemctl start clickhouse-server

 

关闭

systemctl stop clickhouse-server

重启

systemctl restart clickhouse-server

4.2 通过原生命令

    启动

/etc/init.d/clickhouse-server start

关闭

/etc/init.d/clickhouse-server stop

    重启

/etc/init.d/clickhouse-server stop

登录方法

5.1 clickhouse-client登录本地服务器

clickhouse-client -h 127.0.0.1 --port 9000 -u default -d default --ask-password

下面解释这些参数的含义:

-h 127.0.0.1 表示连接到本地

--port 9000是表示 clickhouse接收TPC/IP连接的端口是9000

-u default 表示用户名是 default

-d default 表示连接到的数据库的名称是 default

我们推荐用puttyXShell来访问linux 客户端。

注意BUG:用SecureCRT 访问会出错。例如:

输入“alter”,会显示成下面这样:

 ClickHouse 简单使用(二)第1张

5.2 用图形化客户端

dbeaver 提供了连接 clickhouse 的能力。它在连接clickhouse 服务端时会自动下载需要的驱动。

如图所示,是一个连接的配置。注意clickhouse jdbc 是基于 HTTP协议的,而clickhouse接受HTTP连接的端口是8123

 ClickHouse 简单使用(二)第2张

6 常用 sql 语句

ClickHouseMySQL语法相似。这里列出一些常用的sql 语句。参见官方手册的章节statement

6.1 创建

这一节的内容来自官方手册中的Create Queries.

6.1.1 创建数据库

基本语法:

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]

ClickHouse 的引擎(ENGINE有这些:

1. 默认引擎

默认情况下,ClickHouse使用自身的数据库引擎,该引擎可以提供表引擎配置( table engines )和SQLSQL dialect.

2. MySQL引擎

允许连接到远程MySQL服务器上的数据库,并执行INSERTSELECT查询以在ClickHouseMySQL之间交换数据。

创建数据库语法:

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]

ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')

3. Lazy引擎

在最后一次访问之后,仅在expiration_time_in_seconds秒内将表保留在RAM中。只有Log引擎的表可以使用。

该引擎针对存储很多小型Log引擎表的情况进行了优化。因为对于这些表而言,两次访问之间的时间间隔很长。

创建数据库语法:

CREATE DATABASE testlazy ENGINE = Lazy(expiration_time_in_seconds);

6.1.2 创建表

基本语法:

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

(

        name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1],

        name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2],

        ...

) ENGINE = engine;

    

    ClickHouse 的表的引擎很多,在7章会详细介绍。

6.1.3 创建视图

创建普通视图:

CREATE [OR REPLACEVIEW [IF NOT EXISTS] [db.]table_name [ON CLUSTERAS SELECT ...

创建物化视图:

CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db.]table_name [ON CLUSTER] [TO[db.]name] [ENGINE = engine] [POPULATE] AS SELECT ...

6.1.4 创建用户

基本语法:

CREATE USER [IF NOT EXISTS | OR REPLACE] name [ON CLUSTER cluster_name]

[

IDENTIFIED

       [WITH

{NO_PASSWORD|PLAINTEXT_PASSWORD|SHA256_PASSWORD|SHA256_HASH|DOUBLE_SHA1_PASSWORD|DOUBLE_SHA1_HASH}]

     BY {'password'|'hash'}

]

    [HOST {LOCAL | NAME 'name' | REGEXP 'name_regexp' | IP 'address' | LIKE 'pattern'} [,...] | ANY | NONE]

    [DEFAULT ROLE role [,...]]

    [SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [READONLY|WRITABLE] | PROFILE 'profile_name'] [,...]

身份识别——identification

定义身份识别的方法有多种:

  • IDENTIFIED WITH no_password
  • IDENTIFIED WITH plaintext_password BY 'qwerty'
  • IDENTIFIED WITH sha256_password BY 'qwerty' or IDENTIFIED BY 'password'
  • IDENTIFIED WITH sha256_hash BY 'hash'
  • IDENTIFIED WITH double_sha1_password BY 'qwerty'
  • IDENTIFIED WITH double_sha1_hash BY 'hash'

注意,上面的 ‘qwerty’ 是明文密码,而 ‘hash’ 是密码被hash算法处理后的结果。

6.1.5 创建角色

基本语法:

CREATE ROLE [IF NOT EXISTS | OR REPLACE] name

    [SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [READONLY|WRITABLE] | PROFILE 'profile_name'] [,...]

6.2 删除

这一节的内容来自官方手册中的DROP Statements 

6.2.1 删除数据库

基本语法:

DROP DATABASE [IF EXISTS] db [ON CLUSTER cluster]

6.2.2 删除表

基本语法:

DROP [TEMPORARYTABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

6.2.3 删除视图

基本语法:

DROP VIEW [IF EXISTS] [db.]name [ON CLUSTER cluster]

6.2.4 删除用户

基本语法:

DROP USER [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

6.2.5 删除角色

基本语法:

DROP ROLE [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

6.3 修改

这一节的内容来自官方手册中的ALTER Statements

6.3.1 修改表的字段

基本语法:

ALTER TABLE [db].name [ON CLUSTER clusterADD|DROP|CLEAR|COMMENT|MODIFY COLUMN ...

支持以下操作:

6.3.2 处理分区

基本语法:

ALTER TABLE [db].name [ON CLUSTER clusterDETACH|DROP|ATTACH|ATTACH|REPLACE|MOVE|CLEAR COLUMN IN|CLEAR INDEX IN|FREEZE|FETCH|MOVE PARTITION ...

 

支持以下操作:

8.1节有这些命令的使用案例。

下面我们详细解释这些命令:

ATTACH PART | PARTITION

语法:

ALTER TABLE table_name DETACH PARTITION|PART partition_expr

将指定分区的所有数据移动到detached目录中。服务器会忘记分离的数据分区,就好像它不存在一样。在您进行ATTACH查询之前,服务器将不知道此数据。

    例如:

ALTER TABLE mt DETACH PARTITION '2020-11-21';

ALTER TABLE mt DETACH PART 'all_2_2_0';

可以在如何指定分区表达式一节中阅读有关设置分区表达式的更多信息。

执行上述查询后,您可以对detached目录中的数据执行任何操作-将其从文件系统中删除,或将其保留。

此查询已复制将数据移动到detached所有副本上的目录中。请注意,你只能在领导者副本上执行此查询。若要确定副本是否为领导者,请查询system.replicas

DROP PARTITION|PART

语法:

ALTER TABLE table_name DROP PARTITION|PART partition_expr

从表中删除指定的分区。该查询将分区标记为非活动状态,并大约在10分钟内完全删除数据。

可以在如何指定分区表达式一节中阅读有关设置分区表达式的更多信息。

DROP DETACHED PARTITION|PART 

语法:

ALTER TABLE mt DROP PARTITION '2020-11-21';

ALTER TABLE mt DROP PART 'all_4_4_0';

detached的分区中删除指定分区或所有分区。

可以在如何指定分区表达式一节中阅读有关设置分区表达式的更多信息。

ATTACH PARTITION|PART

语法:

ALTER TABLE table_name ATTACH PARTITION|PART partition_expr

detached目录将数据添加到表中。可以为整个分区或单独的部分添加数据。例子:

ALTER TABLE visits ATTACH PARTITION 201901;

ALTER TABLE visits ATTACH PART 201901_2_2_0;

如何指定分区表达式一节中阅读有关设置分区表达式的更多信息。

此查询被复制。复制启动器检查detached目录中是否有数据。如果数据存在,查询将检查其完整性。如果一切正确,则查询会将数据添加到表中。所有其他副本都从副本启动器下载数据。

因此,您可以将数据detached放在一个副本上的目录中,然后使用ALTER ... ATTACH查询将其添加到所有副本上的表中。

ATTACH PARTITION FROM

语法:

ALTER TABLE table2 ATTACH PARTITION partition_expr FROM table1

此查询从复制数据分区,table1table2将数据添加到中存在的数据table2。请注意,不会从中删除数据table1

为了使查询成功运行,必须满足以下条件:

两个表必须具有相同的结构。

两个表必须具有相同的分区键。

REPLACE PARTITION

语法:

ALTER TABLE table2 REPLACE PARTITION partition_expr FROM table1

此查询将的数据分区从复制table1到,table2并替换中的现有分区table2。请注意,不会从中删除数据table1

为了使查询成功运行,必须满足以下条件:

两个表必须具有相同的结构。

两个表必须具有相同的分区键。

MOVE PARTITION TO TABLE

语法:

ALTER TABLE table_source MOVE PARTITION partition_expr TO TABLE table_dest

此查询将数据分区从table_source移至table_dest,并从table_source中删除这些数据。

为了使查询成功运行,必须满足以下条件:

两个表必须具有相同的结构。

两个表必须具有相同的分区键。

两个表都必须是相同的引擎系列(已复制或未复制)。

两个表必须具有相同的存储策略。

CLEAR COLUMN IN PARTITION

语法:

ALTER TABLE table_name CLEAR COLUMN column_name IN PARTITION partition_expr

重置分区中指定列中的所有值。如果DEFAULT子句在创建表时已确定,则此查询会将列值设置为指定的默认值。

例如:

ALTER TABLE visits CLEAR COLUMN hour in PARTITION 201902;

FREEZE PARTITION

ALTER TABLE table_name FREEZE [PARTITION partition_expr]

该查询创建指定分区的本地备份(冻结并不影响分区的使用)。如果PARTITION省略该子句,则查询将立即创建所有分区的备份。

6.3.3 删除数据

ALTER TABLE [db.]table [ON CLUSTER cluster] DELETE WHERE filter_expr

删除与指定过滤表达式匹配的数据。

6.3.4 修改表中数据

修改数据在OLAP数据库中通常是不受欢迎的。ClickHouse也不例外。像其他一些OLAP产品一样,ClickHouse最初甚至不支持更新。后来,更新被ClickHouse支持了,但也是异步的,这使得它们很难在交互式应用程序中使用。因此不建议在应用中使用clickhouse的更新功能。

语法:

ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr

操作与指定表达式匹配的数据。

6.4 查看各项系统信息

ClickHouse 的系统表位于 system 数据库中。下列列举常用的系统表

6.4.1 查看分布式集群信息

select * from system.clusters;

6.4.2 查看数据库版本信息等

select * from system.build_options;

6.4.3 查看有哪些进程

select * from system.processes;

6.4.4 查看有哪些表

select * from system.tables;

6.4.5 查看有哪些用户

select * from system.users;

免责声明:文章转载自《ClickHouse 简单使用(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用OllyDbg做破解[转]密码学解密网站汇总下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一文看懂 MySQL 分区和分表,提高表增删改查效率

下载网站:www.SyncNavigator.CN客服QQ1793040---------------------------------------------------------- 关于HKROnline SyncNavigator 注册机价格的问题 HKROnline SyncNavigator 8.4.1 非破解版 注册机 授权激活教程 最...

pg10、11、12版本特性

2. 分区表的改进 PostgreSQL 10 实现了声明式分区,PostgtreSQL 11完善了功能,PostgreSQL 12提升了性能。我们知道在PostgreSQL 9.X时代需要通过表继承实现分区,这时还需要手工加触发器或规则把新插入的数据重新定向到具体的分区中,从PostgreSQL 10之后不需要这样了,直接用声明式分区就可以了,语法如下:...

Centos7 初始化硬盘分区、挂载

通过命令fdisk-l查看硬盘信息 可以看到有两块硬盘/dev/vda和/dev/vdb,启动vda是系统盘vdb是我们新增的数据盘。 2.执行以下命令,进入fdisk模式,开始对新增数据盘执行分区操作。 fdisk 新增数据盘 以新挂载的数据盘“/dev/xvdb”为例: fdisk /dev/xvdb 回显类似如下信息: 3.输入“n”,按“Ent...

MySQL update慢问题解决 规格严格

最近新做的一个项目要发布,结果在最终测试时候出问题了。后台的MySQL一直CPU使用率居高不行,通过: show processlist查看到一个SQL很异常,update XX set YY = KK where pK = ?; 这是一个简单的SQL,可是为什么他可能会影响问题呢。 背景: MySQL数据库,MyIsam表,按照时间建立一级分区,按照天建...

战神Z7 D2安装黑苹果OS X El Capitan 10.11.2

安装之初状态:两块硬盘,都是MBR格式分区,一块是机械硬盘,安装了WIN7 32位和Linux,一块是SSD,安装的是WIN7 64位与WIN10 64位以前玩过Mavericks,安装的就是在硬盘的扩展分区,因此这次也是安装在扩展分区上。硬盘本身已经在尾部预留了一块空白区,分成两个逻辑盘,一个是安装后的系统分区,一个是安装盘使用分区在WINDOWS下划分...

Linux mount/unmount命令(转)

格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有:-a 安装在/etc/fstab文件中类出的所有文件系统。-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。-n 不把安装记录在/etc/mtab 文件中。-r 讲文件系统安装为只读。-v 详细显示安装信息。-w 将文件系统安装为可写,为命令默认情况。-t  指...