DROP EXTERNAL TABLE

Supprime une table externe du schéma actuel ou spécifié. 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 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 db_name.schema_name.table_name ou 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 supprime la table externe même si celle-ci présente des clés primaires ou uniques 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 supprime 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 à l’aide de Time Travel ; de plus, il n’existe 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 rend cette vue non valide (c’est-à-dire qu’interroger la vue renvoie une erreur de type « cet 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

Supprimez à nouveau la table, mais n’engendrez pas d’erreurs si la table n’existe pas :

DROP EXTERNAL TABLE IF EXISTS t2;

+------------------------------------------------------------+
| status                                                     |
|------------------------------------------------------------|
| Drop statement executed successfully (T2 already dropped). |
+------------------------------------------------------------+
Copy