如何在clickhouse中更改分区

wyx*_*wyx 1 clickhouse

版本 18.16.1

CREATE TABLE traffic (
    `date` Date,
    ...
) ENGINE = MergeTree(date, (end_time), 8192);
Run Code Online (Sandbox Code Playgroud)

我想在PARTITION BY toYYYYMMDD(date)没有删除表的情况下更改如何执行此操作。

dmk*_*kvl 5

由于ALTER 查询不允许分区更改,因此可能的方法是创建一个新表

CREATE TABLE traffic_new
(
    `date` Date,
    ...
)
ENGINE = MergeTree(date, (end_time), 8192)
PARTITION BY toYYYYMMDD(date);
Run Code Online (Sandbox Code Playgroud)

并移动您的数据

INSERT INTO traffic_new SELECT * FROM traffic WHERE column BETWEEN x and xxxx;
Run Code Online (Sandbox Code Playgroud)

如有必要,重命名最终表。是的,这个选项涉及删除旧表(似乎没有办法跳过这一步)