DROP EXTERNAL TABLE¶
Supprime une table externe du schéma actuel/spécifié. Notez qu’il s’agit d’une opération comportant uniquement des métadonnées. Aucun des fichiers référencés par la table externe n’est détruit.
- Voir aussi :
CREATE EXTERNAL TABLE , ALTER EXTERNAL TABLE , SHOW EXTERNAL TABLES , DESCRIBE EXTERNAL TABLE
Syntaxe¶
DROP EXTERNAL TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Paramètres¶
name
Indique l’identificateur de la table externe à détruire. Si l’identificateur contient des espaces, des caractères spéciaux ou des caractères de différentes casses, toute la chaîne doit être entre guillemets doubles. Les identificateurs placés entre guillemets doubles sont également sensibles à la casse (par exemple,
"My Object"
).Si l’identificateur de la table externe n’est pas complet (sous la forme de
db_name.schema_name.table_name
ou deschema_name.table_name
), la commande recherche la table externe dans le schéma actuel de la session.CASCADE | RESTRICT
Indique si la table externe peut être détruite s’il existe des clés étrangères qui font référence à la table :
CASCADE
détruit la table externe même si celle-ci présente des clés primaires/uniques qui sont référencées par des clés étrangères dans d’autres tables.RESTRICT
renvoie un avertissement sur les références de clés étrangères existantes et ne détruit pas la table externe.
Par défaut :
CASCADE
Notes sur l’utilisation¶
Contrairement à une table standard, la destruction d’une table externe la purge du système. Une table externe ne peut pas être récupérée avec Time Travel ; de plus, il n’y a pas de commande UNDROP EXTERNAL TABLE. Une table externe détruite doit être recréée.
Après avoir supprimé une table externe, la création d’une table externe portant le même nom recrée la table. Aucun historique de l’ancienne version de la table externe n’est conservé.
Avant de détruire une table externe, vérifiez qu”aucune vue ne lui fait référence. La suppression d’une table externe référencée par une vue invalide la vue (c’est-à-dire que l’interrogation de la vue renvoie une erreur « L’objet n’existe pas »).
Lorsque la clause
IF EXISTS
est spécifiée et que l’objet cible n’existe pas, la commande se termine correctement sans renvoyer d’erreur.
Exemples¶
Détruire une table externe :
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 | |------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------| +------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------+
Détruire à nouveau la table, mais ne pas engendrer d’erreur si la table n’existe pas :
DROP EXTERNAL TABLE IF EXISTS t2; +------------------------------------------------------------+ | status | |------------------------------------------------------------| | Drop statement executed successfully (T2 already dropped). | +------------------------------------------------------------+