如需在 ByteHouse 中删除数据,可通过 ALTER DELETE 方式,更多操作详情请参考删除操作(DELETE)。
注意
delete where 只能在本地(local)表上操作,不支持在分布式表操作。delete where 语法。ALTER TABLE [tableIdentifier] DELETE [IN PARTITION partition_id] WHERE filter_expr;
参数说明:
IN PARTITION partition_id:可选,如果表数据量较大,或者表的 part 数量较多,建议添加该条件,分区级别执行 delete 操作,更快、更稳定。
-- 1. 创建库 CREATE DATABASE IF NOT EXISTS sample_db ON CLUSTER sample_cluster; -- 2. 创建测试表 DROP TABLE IF EXISTS sample_db.sample_table_local ON CLUSTER sample_cluster; DROP TABLE IF EXISTS sample_db.sample_table ON CLUSTER sample_cluster; CREATE TABLE IF NOT EXISTS sample_db.sample_table_local ON CLUSTER sample_cluster ( `order_by_column` String, `partition_column` Date, `browser` String, `hour` Int32, `x` Int32, `p` Int32 ) ENGINE = HaMergeTree('/clickhouse/tables/{shard}/{database}/local_table_name', '{replica}') PARTITION BY partition_column ORDER BY (`order_by_column`); CREATE TABLE sample_db.sample_table AS sample_db.sample_table_local ENGINE = Distributed(sample_cluster, sample_db, sample_table_local, hour); -- 3. 插入数据 INSERT INTO sample_db.sample_table_local ON CLUSTER sample_cluster VALUES ('order1', '2020-11-21', 'chrome', 8, 10, 2), ('order2', '2020-11-02', 'chrome', 8, 10, 2), ('order3', '2020-10-05', 'firefox', 9, 20, 2); -- 4. 删除数据 ALTER TABLE sample_db.sample_table_local ON CLUSTER sample_cluster DELETE WHERE browser = 'firefox';