TRUNCATE TABLE

테이블 또는 파티션에서 모든 행을 제거합니다. 테이블은 뷰 또는 외부 또는 임시 테이블이 아니어야 합니다. 여러 파티션을 한 번에 자르려면 에서 파티션을 partition_spec 지정합니다. 를 partition_spec 지정하지 않으면 는 테이블의 모든 파티션을 제거합니다.

테이블이 캐시되면 명령은 테이블의 캐시된 데이터와 테이블을 참조하는 모든 종속 데이터를 지웁니다. 다음에 테이블 또는 종속에 액세스할 때 캐시가 천천히 채워지게 됩니다.

구문

TRUNCATE TABLE table_identifier [ partition_spec ]

매개 변수

  • table_identifier

    • [database_name.] table_name: 필요에 따라 데이터베이스 이름으로 정규화된 테이블 이름입니다.
    • delta.`<path-to-table>`: 기존 델타 테이블의 위치입니다.
  • partition_spec

    파티션에 대한 키-값 쌍의 선택적 쉼표로 구분된 목록입니다.

    구문:

-- 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|
+----+------+---+
+----+------+---+