TRUNCATE TABLE
TRUNCATE TABLE
테이블에서 모든 행을 제거하지만 테이블 자체는 유지하는 명령이에요(테이블의 모든 권한과 제약 조건 포함). 또한 테이블의 로드 메타데이터를 삭제해, 명령 완료 후 같은 파일을 테이블에 다시 로드할 수 있게 해요.
출처: 문서
본문
테이블에서 모든 행을 제거하지만 테이블 자체는 유지해요(테이블의 모든 권한과 제약 조건 포함). 또한 테이블의 로드 메타데이터를 삭제해, 명령 완료 후 같은 파일을 테이블에 다시 로드할 수 있게 해요. 이는 테이블을 시스템에서 제거하지만 테이블의 버전(로드 기록 포함)을 보존해 복구할 수 있게 하는 DROP TABLE과 다르다는 점에 주의해요.
구문
TRUNCATE [ TABLE ] [ IF EXISTS ] <name>
TRUNCATE [ TABLE ] [ IF EXISTS ] ERROR_TABLE( <base_table_name> )
매개변수
name
truncate할 테이블의 식별자를 지정해요. 식별자에 공백이나 특수 문자가 포함되면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶은 식별자는 대소문자를 구분해요(예: "My Object"). 테이블 식별자가 정규화되지 않은 경우(db_name.schema_name.table_name 또는 schema_name.table_name 형태), 명령은 세션의 현재 스키마에서 테이블을 찾아요.
ERROR_TABLE( base_table_name )
지정된 기본 테이블과 연결된 오류 테이블(error table)을 truncate해요. 오류 테이블에 대한 자세한 내용은 DML 오류 로깅(DML error logging)을 참고해요. 식별자에 공백이나 특수 문자가 포함되면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶은 식별자는 대소문자를 구분해요(예: "My Object"). 테이블 식별자가 정규화되지 않은 경우(db_name.schema_name.table_name 또는 schema_name.table_name 형태), 명령은 세션의 현재 스키마에서 테이블을 찾아요.
사용 메모
- DELETE와 TRUNCATE TABLE 모두 데이터 보존 기간 동안 복구 목적(즉 Time Travel 사용)으로 삭제된 데이터를 유지해요. 그러나 테이블이 truncate되면 로드 메타데이터는 복구할 수 없어요.
- TABLE 키워드는 테이블 이름이 정규화되었거나 세션에 현재 사용 중인 데이터베이스와 스키마가 있으면 선택 사항이에요.
예제
다음 예제는 테이블을 truncate해요:
기본 테이블을 만들고 데이터를 삽입해요:
CREATE OR REPLACE TABLE temp_test_truncate (i number);
INSERT INTO temp_test_truncate SELECT seq8() FROM table(generator(rowcount=>20)) v;
SELECT COUNT (*) FROM temp_test_truncate;
+-----------+
| COUNT (*) |
|-----------|
| 20 |
+-----------+
테이블을 truncate해요:
TRUNCATE TABLE IF EXISTS temp_test_truncate;
테이블이 이제 비어 있는지 확인해요:
SELECT COUNT (*) FROM temp_test_truncate;
+-----------+
| COUNT (*) |
|-----------|
| 0 |
+-----------+
더 알아보기 (Learn more)
- See also: CREATE TABLE, DROP TABLE