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 命令。必须重新创建删除的外部表。
删除外部表后,创建同名的外部表将重新创建该表。不会保留旧版本外部表的历史记录。
在删除外部表之前,请核实 没有 视图引用该表。删除视图引用的外部表会使视图失效(即查询视图会返回“对象不存在”错误)。
示例¶
删除外部表:
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). | +------------------------------------------------------------+