场景:
使用ReplicatedMergeTree 引擎 创建的表 做类似于hive overwirte 模式的写数据 ,具体的操作步骤是:先使用delete 然后在insert 发现insert 删除前的相同的数据 select时不可见
解决方案:
- session 级别 : set insert_deduplicate =0 ; 详细说明见:clickhouse官方文档
具体操作
- 第一步:创建一个Replicated表
CREATE TABLE test
(
`id` Int32,
`day` Int32
)
ENGINE = ReplicatedMergeTree('/clickhouse/default/test/', 'replica')
PARTITION BY day
ORDER BY (id, day)
SETTINGS index_granularity = 8192;
- 第2步: 初始化 3条记录
insert into test (id, day) values(1 , 202010),(2 , 202010),(3 , 202010);
- 第3步: 删除某一条记录
ALTER TABLE test DELETE WHERE id=1;
- 第4步: 查询 得到只有 ID 为 2 和 3 的数据
- 第5步: 插入一条第3 步中删除的数据
insert into test (id, day) values(1 , 202010)
-
第6步 : 查询结果 没什么变化
-
第7步: 设置insert_deduplicat =0
set insert_deduplicate=0 ;
- 第8步 :再次查询