DROP EXTERNAL TABLE¶
현재/지정된 스키마에서 외부 테이블을 제거합니다. 이것은 메타데이터 전용 작업입니다. 외부 테이블이 참조하는 파일은 어떤 것도 삭제되지 않습니다.
구문¶
DROP EXTERNAL TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
매개 변수¶
name
삭제할 외부 테이블의 식별자를 지정합니다. 식별자에 공백, 특수 문자 또는 대/소문자가 혼합된 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다(예:
"My Object"
).외부 테이블 식별자가 (
db_name.schema_name.table_name
또는schema_name.table_name
형식으로) 정규화되지 않은 경우 이 명령은 세션의 현재 스키마에서 외부 테이블을 찾습니다.CASCADE | RESTRICT
테이블을 참조하는 외래 키가 있는 경우 외부 테이블을 삭제할 수 있는지 여부를 지정합니다.
CASCADE
는 다른 테이블의 외래 키가 참조하는 기본/고유 키가 있더라도 외부 테이블을 삭제합니다.RESTRICT
는 기존 외래 키 참조에 대한 경고를 반환하고 외부 테이블을 삭제하지 않습니다.
기본값:
CASCADE
사용법 노트¶
표준 테이블과 달리, 외부 테이블을 삭제하면 시스템에서 제거됩니다. 외부 테이블은 Time Travel을 사용하여 복구할 수 없습니다. 또한, UNDROP EXTERNAL TABLE 명령이 없습니다. 삭제된 외부 테이블은 다시 만들어야 합니다.
외부 테이블을 삭제한 후 이름이 같은 외부 테이블을 만들면 해당 테이블이 다시 생성됩니다. 외부 테이블의 이전 버전 기록은 보존되지 않습니다.
외부 테이블을 삭제하기 전에 테이블을 참조하는 뷰가 없음 을 확인하십시오. 뷰에서 참조하는 외부 테이블을 제거하면 뷰가 무효화됩니다(즉, 뷰를 쿼리하면 “오브젝트가 없습니다” 오류가 반환됨).
IF EXISTS
절이 지정되어 있고 대상 오브젝트가 존재하지 않으면 명령이 오류를 반환하지 않고 성공적으로 완료됩니다.
예¶
외부 테이블 삭제하기:
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). | +------------------------------------------------------------+