TRUNCATE TABLE

从表或分区中删除所有行。 表不能是视图,也不能是外部表或临时表。 若要同时截断多个分区,请在 partition_spec 中指定分区。 如果未指定 partition_spec,则删除表中的所有分区。

语法

TRUNCATE TABLE table_identifier [ partition_spec ]

参数

  • table_identifier

    • [database_name.] table_name:表名,可选择使用数据库名称进行限定。
    • delta.`<path-to-table>`:现有 Delta 表的位置。
  • partition_spec

    分区键值对的可选逗号分隔列表。

    语法: PARTITION ( partition_col_name = partition_col_val [ , ... ] )

示例

-- Create table Student with partition
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|
+----+------+---+

-- Remove all rows from the table in the specified partition
TRUNCATE TABLE Student partition(age=10);

-- After truncate execution, records belonging to partition age=10 are removed
SELECT * FROM Student;
+----+------+---+
|name|rollno|age|
+----+------+---+
| XYZ|     3| 12|
+----+------+---+

-- Remove all rows from the table from all partitions
TRUNCATE TABLE Student;

SELECT * FROM Student;
+----+------+---+
|name|rollno|age|
+----+------+---+
+----+------+---+