Clickhous数据库命令详解

基础设施:

两台机器 192 和193 

创建数据库

create databases testdb;

use testdb;

创建表 (clickhouse即使用了ReplicatedMergeTree引擎也需要在另一台机器上在创建一次表)

CREATE TABLE week4 (d Date, name UInt8) ENGINE = ReplicatedMergeTree ('/clickhouse/testdb/{layer}-{shard}/week4', '{replica}') PARTITION BY toYYYYMMDD(d) ORDER BY (name, d);

复制表删除:week4 zai 194和192 上为复制表  删除192上的一个表,另一个表并不会消失  
此时在另一个表上做各种操作,之后在192上在创建一个week4,数据会同步回来。想要完全删除一个复制表请删除集群中
所有的表的复制。

添加列
ALTER TABLE week4 ADD COLUMN Add01 UInt32;
添加完列此列会同步到所有复制表
ALTER TABLE week4 DROP COLUMN Add01;
删除列同样 
将某一列添加到某个列的后面
ALTER TABLE week4 ADD COLUMN ADD02 UInt32 AFTER d;
修改主键:
AlteR table week4 MODIFY PRIMARY KEY (ADD02); 只有非复制表能修改主键

Exception: Received from 127.0.0.1:9001. DB::Exception: Modification of primary key is not supported for replicated tables.

向表中添加具有指定名称,类型和的新列default_expr(请参阅“默认表达式”部分)。如果指定AFTER name_after(另一列的名称),则在表列的指定列之后添加该列。否则,该列将添加到表的末尾。请注意,无法将列添加到表的开头。对于一系列操作,'name_after'可以是在先前操作之一中添加的列的名称。

添加列只会更改表结构,而不会对数据执行任何操作。ALTER后数据不会出现在磁盘上。如果从表中读取列时缺少数据,则使用默认值填充(通过执行默认表达式,如果有,或使用零或空字符串)。如果从表中读取列时缺少数据,则使用默认值填充(通过执行默认表达式,如果有,或使用零或空字符串)。合并数据部分后,该列将显示在磁盘上(请参阅MergeTree)。

这种方法允许我们立即完成ALTER查询,而不会增加旧数据量。

不支持删除主键或采样键中的列(ENGINE表达式中的列)。只有在此更改不会导致数据被修改时(例如,允许将值添加到枚举或使用DateTimeto 更改类型),才能更改主键中包含的列的类型UInt32。

如果ALTER查询不足以使您需要更改表,则可以创建新表,使用INSERT SELECT查询将数据复制到表,然后使用查询切换表RENAME并删除旧表。

该ALTER查询阻止对表的所有读写操作。换句话说,如果SELECT在ALTER查询时运行long ,则ALTER查询将等待它完成。同时,对同一个表的所有新查询将在ALTER运行时等待。

对于不自行存储数据的表(例如Merge和Distributed),ALTER只需更改表结构,而不更改从属表的结构。例如,为Distributed表运行ALTER时,还需要ALTER在所有远程服务器上运行表。

将ALTER复制更改列的查询。说明保存在ZooKeeper中,然后每个副本都应用它们。所有ALTER查询都以相同的顺序运行。查询等待在其他副本上完成相应的操作。但是,可以中断用于更改复制表中列的查询,并且将异步执行所有操作。


如果仍需要在不重新启动ClickHouse服务器的情况下删除表,请创建该<clickhouse-path>/flags/force_drop_table文件并运行DROP查询。

max_table_size_to_drop
删除表格的限制。

如果MergeTree表的大小超过max_table_size_to_drop(以字节为单位),则无法使用DROP查询将其删除。
默认值:50 GB。

值0表示您可以不受任何限制地删除所有表。


config.xml 设置此参数 220行
<max_table_size_to_drop> 0 </ max_table_size_to_drop>
以上来自官网

https://clickhouse.yandex/docs/en/query_language/alter/ 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值