Catégories :

Table, vue et séquence DDL

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 , SHOW EXTERNAL TABLES

Syntaxe

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

Paramètres

nom

Indique l’identificateur de la table externe à détruire. Si l’identificateur contient des espaces, des caractères spéciaux ou des caractères majuscules et minuscules, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse (p. ex. "My Object").

Si l’identificateur de la table externe n’est pas complet (sous la forme nom_bd.nom_schéma.nom_table ou nom_schéma.nom_table), 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 destruction d’une table externe référencée par une vue rend non valide la vue (comme interroger la vue renvoie une erreur de type « l’objet n’existe pas »).

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