截断表

描述

TRUNCATE TABLE 语句会从表或分区中移除所有行。表不能是视图或外部/临时表。为了同时截断多个分区,用户可以在 partition_spec 中指定分区。如果没有指定 partition_spec ,则会移除表中的所有分区。

如果表被缓存,命令将清除表及其所有依赖项的缓存数据。下次访问表或依赖项时,缓存将被延迟填充。

语法

TRUNCATE TABLE table_identifier [ partition_spec ]

参数

示例

-- 创建分区表 Student
CREATE TABLE Student (name STRING, rollno INT) PARTITIONED BY (age INT);
SELECT * FROM Student;
+----+------+---+
|name|rollno|age|
+----+------+---+
| ABC| 1| 10|
| DEF| 2| 10|
| XYZ| 3| 12|
+----+------+---+
-- 从指定分区中删除表中的所有行
TRUNCATE TABLE Student partition(age=10);
-- 执行截断后,属于分区 age=10 的记录被删除
SELECT * FROM Student;
+----+------+---+
|name|rollno|age|
+----+------+---+
| XYZ| 3| 12|
+----+------+---+
-- 从所有分区中删除表中的所有行
TRUNCATE TABLE Student;
SELECT * FROM Student;
+----+------+---+
|name|rollno|age|
+----+------+---+
+----+------+---+