TRUNCATE TABLE
语法
TRUNCATE [TABLE] table_name [PARTITION partition_spec];
partition_spec:
: (partition_column = partition_col_value, partition_column = partition_col_value, ...)
描述
从表或分区中移除所有行。用户可以通过partition_spec一次性删除分区表的多个分区,如果不指定就一次清除分区表的所有分区。当表属性“auto.purge”采用默认值“false”时,被删除的数据行将保存到文件系统的回收站,否则,当“auto.purge”设置为“true”时,数据行将被直接删除。
限制
目标表必须是管控表(表属性external=false),否则执行语句将报错。
示例
-- 删除原生/管控表 Create table simple(id int, name string); Insert into simple values(1,'abc'),(2,'def'); select * from simple; id | name ----|------ 1 | abc 2 | def (2 rows) Truncate table simple; select * from simple; id | name ----|------ (0 rows) --删除表分区 Create table tb_truncate_part (id int, name string) partitioned by (age int, state string); Insert into tb_truncate_part values (1,'abc',10,'ap'),(2,'abc',10,'up'),(3,'abc',20,'ap'),(4,'abc',20,'up'); select * from tb_truncate_part; id | name | age | state ----|------|-----|------- 2 | abc | 10 | up 3 | abc | 20 | ap 1 | abc | 10 | ap 4 | abc | 20 | up (4 rows) Truncate table tb_truncate_part partition (state = 'ap', age = 10); select * from tb_truncate_part; id | name | age | state ----|------|-----|------- 4 | abc | 20 | up 2 | abc | 10 | up 3 | abc | 20 | ap (3 rows)