Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

截断表

Truncate 可删除表或数据库中的数据,同时保留表或数据库本身。这是一种轻量级操作,且无法撤销。

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 查询的时长 (以秒为单位) 。

以下表引擎 不支持 TRUNCATE TABLE 查询:

对所有表执行 TRUNCATE

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

Parameter Description
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 子句时,如果数据库不存在,查询会返回错误。

Navigation