TRUNCATE-TABLE
描述
该语句用于清空指定表和分区的数据
语法
TRUNCATE TABLE [<db_name>.]<table_name>[ PARTITION ( <partition_name1> [, <partition_name2> ... ] ) ];
必选参数
1.<db_name>
指定数据库的标识符(即名称)。
标识符必须以字母字符(如果开启 unicode 名字支持,则可以是任意语言文字的字符)开头,并且不能包含空格或特殊字符,除非整个标识符字符串用反引号括起来(例如
My Database
)。标识符不能使用保留关键字。
有关更多详细信息,请参阅标识符要求和保留关键字。
2.<table_name>
指定表的标识符(即名称),在其所在的数据库(Database)中必须唯一。
标识符必须以字母字符(如果开启 unicode 名字支持,则可以是任意语言文字的字符)开头,并且不能包含空格或特殊字符,除非整个标识符字符串用反引号括起来(例如
My Object
)。标识符不能使用保留关键字。
有关更多详细信息,请参阅标识符要求和保留关键字。
可选参数
1.<partition_name>
指定分区的标识符(即名称)。
标识符必须以字母字符(如果开启 unicode 名字支持,则可以是任意语言文字的字符)开头,并且不能包含空格或特殊字符,除非整个标识符字符串用反引号括起来(例如
My Object
)。标识符不能使用保留关键字。
有关更多详细信息,请参阅标识符要求和保留关键字。
权限控制
执行此 SQL 命令的用户必须至少具有以下权限:
权限(Privilege) | 对象(Object) | 说明(Notes) |
---|---|---|
Drop_priv | 表(Table) | TRUNCATE TABLE 属于表 DROP 操作 |
注意事项
- 该语句清空数据,但保留表或分区。
- 不同于 DELETE,该语句只能整体清空指定的表或分区,不能添加过滤条件。
- 不同于 DELETE,使用该方式清空数据不会对查询性能造成影响。
- 该操作删除的数据不可恢复。
- 使用该命令时,表状态需为 NORMAL,即不允许正在进行 SCHEMA CHANGE 等操作。
- 该命令可能会导致正在进行的导入失败。
示例
-
清空 example_db 下的表 tbl
TRUNCATE TABLE example_db.tbl;
-
清空表 tbl 的 p1 和 p2 分区
TRUNCATE TABLE tbl PARTITION(p1, p2);