DROP EXTERNAL TABLE

从当前/指定的架构中移除外部表。请注意,这是仅对元数据的操作。外部表引用的任何文件都不会被删除。

另请参阅:

CREATE EXTERNAL TABLEALTER EXTERNAL TABLESHOW EXTERNAL TABLESDESCRIBE EXTERNAL TABLE

语法

DROP EXTERNAL TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Copy

参数

name

指定要删除的外部表的标识符。如果标识符包含空格、特殊字符或大小写混合字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写(例如,"My Object")。

如果表标识符不是完全限定的(以 db_name.schema_name.table_nameschema_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 |
|------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------|
+------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------+
Copy

再次删除该表,但如果该表不存在,则不会引发错误:

DROP EXTERNAL TABLE IF EXISTS t2;

+------------------------------------------------------------+
| status                                                     |
|------------------------------------------------------------|
| Drop statement executed successfully (T2 already dropped). |
+------------------------------------------------------------+
Copy
语言: 中文