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 ]
Copy

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 de schema_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 |
|------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------|
+------------+------+---------------+-------------+-------+---------+----------+------------------+------------------+-------+--------+----------------------+
Copy

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). |
+------------------------------------------------------------+
Copy