跳转到主要内容
ClickHouse 中的 TRUNCATE 语句用于在保留表或数据库结构的同时,快速删除其中的所有数据。

TRUNCATE TABLE

TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster] [SYNC]

参数描述
IF EXISTS如果表不存在,则不报错。如果省略,查询将返回错误。
db.name可选的数据库名称。
ON CLUSTER cluster在指定集群上执行该命令。
SYNC使用复制表时,使截断操作在各副本间同步进行。如果省略,则默认异步执行截断操作。
你可以使用 alter_sync 设置来控制是否等待副本上的操作执行完成。 你可以使用 replication_wait_for_inactive_replica_timeout 设置来指定等待非活动副本执行 TRUNCATE 查询的时长 (以秒为单位) 。
如果 alter_sync 设置为 2,且某些副本的非活动状态持续时间超过 replication_wait_for_inactive_replica_timeout 设置指定的时间,则会抛出 UNFINISHED 异常。
以下表引擎不支持 TRUNCATE TABLE 查询:

TRUNCATE 所有表

TRUNCATE [ALL] TABLES FROM [IF EXISTS] db [LIKE | ILIKE | NOT LIKE '<pattern>'] [ON CLUSTER cluster]

参数描述
ALL删除数据库中所有表的数据。
IF EXISTS如果数据库不存在,则避免报错。
db数据库名称。
LIKE | ILIKE | NOT LIKE '<pattern>'按模式过滤表。
ON CLUSTER cluster在整个集群中执行该命令。
删除数据库中所有表的数据。

TRUNCATE DATABASE

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

参数说明
IF EXISTS如果数据库不存在,则不会报错。
db数据库名称。
ON CLUSTER cluster在指定集群中运行该命令。
移除数据库中的所有表,但保留数据库本身。省略子句 IF EXISTS 时,如果数据库不存在,查询会返回错误。
TRUNCATE DATABASE 不支持 Replicated 数据库。请改为直接 DROPCREATE 该数据库。
最后修改于 2026年6月10日