跳至主要内容
跳至主要内容

清空表

清空操作允许移除表或数据库中的数据,同时保留其存在。这是一个轻量级操作,无法撤销。

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

注意

如果 alter_sync 设置为 2,并且一些副本在超过 replication_wait_for_inactive_replica_timeout 设置指定的时间后仍未处于活动状态,则会抛出异常 UNFINISHED

对于以下表引擎,TRUNCATE TABLE 查询不受支持

TRUNCATE ALL TABLES

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 数据库即可。

    © . This site is unofficial and not affiliated with ClickHouse, Inc.