DROP EXTERNAL TABLE¶
Remove uma tabela externa do esquema atual/especificado. Note que esta é uma operação somente de metadados. Nenhum dos arquivos a que a tabela externa se refere é descartado.
- Consulte também:
CREATE EXTERNAL TABLE , ALTER EXTERNAL TABLE , SHOW EXTERNAL TABLES , DESCRIBE EXTERNAL TABLE
Sintaxe¶
DROP EXTERNAL TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Parâmetros¶
name
Especifica o identificador da tabela externa a ser descartada. Se o identificador contiver espaços, caracteres especiais ou caracteres com letras maiúsculas e minúsculas, toda a cadeia de caracteres deve ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas (por exemplo,
"My Object"
).Se o identificador da tabela externa não estiver totalmente qualificado (na forma de
db_name.schema_name.table_name
ouschema_name.table_name
), o comando procura a tabela externa no esquema atual para a sessão.CASCADE | RESTRICT
Especifica se a tabela externa pode ser descartada caso existam chaves estrangeiras que façam referência à tabela:
CASCADE
descarta a tabela externa mesmo que tenha chaves primárias/únicas que são referenciadas por chaves estrangeiras em outras tabelas.RESTRICT
retorna um aviso sobre as referências de chave estrangeira existentes e não descarta a tabela externa.
Padrão:
CASCADE
Notas de uso¶
Ao contrário de uma tabela padrão, descartar uma tabela externa expulsa-a do sistema. Uma tabela externa não pode ser recuperada usando Time Travel; também, não há comando UNDROP EXTERNAL TABLE. Uma tabela externa descartada deve ser recriada.
Depois de descartar uma tabela externa, criar uma tabela externa com o mesmo nome recria a tabela. Nenhum histórico da antiga versão da tabela externa é retido.
Antes de descartar uma tabela externa, verifique se nenhuma exibição faz referência à tabela. O descarte de uma tabela externa referenciada por uma exibição invalida a exibição (ou seja, consultar a exibição retorna um erro “objeto não existe”).
Exemplos¶
Descartar uma tabela externa:
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 | |------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------| +------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------+
Descartar a tabela novamente, mas não relatar um erro se a tabela não existir:
DROP EXTERNAL TABLE IF EXISTS t2; +------------------------------------------------------------+ | status | |------------------------------------------------------------| | Drop statement executed successfully (T2 already dropped). | +------------------------------------------------------------+