DROP EXTERNAL TABLE
DROP EXTERNAL TABLE
현재 또는 지정된 스키마에서 외부 테이블(External Table)을 제거하는 명령어입니다. 이는 메타데이터 전용 작업이며, 외부 테이블이 참조하는 어떤 파일도 삭제되지 않습니다.
출처: 문서
본문
DROP EXTERNAL TABLE은 현재 또는 지정된 스키마에서 외부 테이블을 제거합니다. 이는 메타데이터 전용 작업으로, 외부 테이블이 참조하는 파일은 어떤 것도 삭제되지 않습니다. 관련 명령어로 CREATE EXTERNAL TABLE, ALTER EXTERNAL TABLE, SHOW EXTERNAL TABLES, DESCRIBE EXTERNAL TABLE이 있어요.
구문 (Syntax)
DROP EXTERNAL TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
파라미터 (Parameters)
- name — 삭제할 외부 테이블의 식별자를 지정합니다. 식별자에 공백, 특수 문자 또는 대소문자 혼합 문자가 포함된 경우 전체 문자열을 큰따옴표로 감싸야 합니다(예:
"My Object"). 큰따옴표로 감싼 식별자는 대소문자를 구분해요. 외부 테이블 식별자가 정규화되지 않았다면(db_name.schema_name.table_name 또는 schema_name.table_name 형태), 명령어는 세션의 현재 스키마에서 외부 테이블을 찾습니다. - CASCADE | RESTRICT — 테이블을 참조하는 외래 키가 존재할 때 외부 테이블을 삭제할 수 있는지 여부를 지정합니다.
CASCADE는 다른 테이블의 외래 키가 참조하는 기본/고유 키가 있는 외부 테이블이어도 삭제합니다.RESTRICT는 기존 외래 키 참조에 대한 경고를 반환하고 외부 테이블을 삭제하지 않습니다.- 기본값:
CASCADE
사용 참고 사항 (Usage notes)
- 일반 테이블과 달리 외부 테이블을 삭제하면 시스템에서 완전히 제거됩니다. 외부 테이블은 Time Travel로 복구할 수 없으며, UNDROP EXTERNAL TABLE 명령어도 없습니다. 삭제된 외부 테이블은 다시 생성해야 합니다.
- 외부 테이블을 삭제한 후 같은 이름으로 외부 테이블을 생성하면 테이블이 다시 생성됩니다. 이전 버전의 외부 테이블에서 어떤 기록도 유지되지 않습니다.
- 외부 테이블을 삭제하기 전에 해당 테이블을 참조하는 뷰가 없는지 확인하세요. 뷰가 참조하는 외부 테이블을 삭제하면 뷰가 무효화되며, 즉 뷰를 조회하면 "object does not exist" 오류가 반환됩니다.
IF EXISTS절을 지정하고 대상 객체가 존재하지 않으면, 명령어는 오류를 반환하지 않고 성공적으로 완료됩니다.
예제 (Examples)
외부 테이블을 삭제합니다.
SHOW EXTERNAL TABLES LIKE 't2%';
+-------------------------------+------------------+---------------+-------------+-----------------------+---------+-----------------------------------------+------------------+------------------+-------+-----------+----------------------+
| created_on | name | database_name | schema_name | owner | comment | location | file_format_name | file_format_type | cloud | region | notification_channel |
|-------------------------------+------------------+---------------+-------------+-----------------------+---------+-----------------------------------------+------------------+------------------+-------+-----------+----------------------|
| 2018-08-06 06:00:42.340 -0700 | T2 | MYDB | PUBLIC | MYROLE | | @MYDB.PUBLIC.MYSTAGE/ | | JSON | AWS | us-east-1 | NULL |
+-------------------------------+------------------+---------------+-------------+-----------------------+---------+-----------------------------------------+------------------+------------------+-------+-----------+----------------------+
DROP EXTERNAL TABLE t2;
+--------------------------+
| status |
|--------------------------|
| T2 successfully dropped. |
+--------------------------+
SHOW EXTERNAL TABLES LIKE 't2%';
+------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------+
| created_on | name | database_name | schema_name | owner | comment | location | file_format_name | file_format_type | cloud | region | notification_channel |
|------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------|
+------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------+
테이블을 다시 삭제하되, 테이블이 존재하지 않아도 오류를 발생시키지 않습니다.
DROP EXTERNAL TABLE IF EXISTS t2;
+------------------------------------------------------------+
| status |
|------------------------------------------------------------|
| Drop statement executed successfully (T2 already dropped). |
+------------------------------------------------------------+