Partager via


TABLE UNDROP

S’applique à : coche marquée oui Databricks SQL coché oui Databricks Runtime 12.2 LTS et versions ultérieures

La commande UNDROP répond au problème de suppression ou d’annulation accidentelle des tables managées ou externes situées dans Unity Catalog. Par défaut, cette commande supprime (récupère) la table la plus récemment supprimée appartenant à l’utilisateur du nom de table donné. Le schéma parent et le catalogue doivent exister. Cette fonctionnalité prend en charge la récupération des tables supprimées pour une période de rétention de 7 jours.

S’il existe plusieurs tables supprimées du même nom, vous pouvez utiliser SHOW TABLES DROPPED pour identifier l’identifiant de table et utiliser UNDROP TABLE WITH ID pour récupérer une table spécifique.

S’il existe une table portant le même nom que la table que vous souhaitez récupérer, utilisez la commande ALTER TABLE RENAME TO pour modifier le nom de la table existante.

Les métadonnées de table, telles que les privilèges de table, les spécifications de colonne et les propriétés, seront récupérées. Les contraintes de clé primaire et étrangère ne sont pas récupérées par la commande UNDROP. Recréez-les manuellement à l’aide de ALTER TABLE ADD CONSTRAINT une fois la table récupérée.

Syntaxe

UNDROP TABLE { table_name | WITH ID table_id }

Paramètre

  • table_name

    Le nom du tableau à récupérer. Le nom ne doit pas inclure de spécification temporelle ou de spécification d’options. Si la table est introuvable, Azure Databricks déclenche une erreur.

  • table_id

    Littéral STRING sous la forme d’un UUID de la table, tel qu’affiché par SHOW TABLES DROPPED.

Autorisations

UNDROP TABLE requiert l'une des autorisations de base suivantes :

  • Un utilisateur est le propriétaire de la table, a CREATE TABLE et USE SCHEMA sur le schéma et USE CATALOG sur le catalogue.
  • Un utilisateur est le propriétaire du schéma et a USE CATALOG sur le catalogue.
  • Un utilisateur est le propriétaire du catalogue.
  • Un utilisateur est le propriétaire du metastore.

Si un utilisateur récupère un autre type de table, des autorisations supplémentaires s’appliquent. Par exemple, pour restaurer une table externe, vous devez également disposer de CREATE EXTERNAL TABLE sur l’emplacement externe ou les informations d’identification de stockage, qui doivent exister.

Après avoir exécuté cette commande, la propriété revient par défaut au propriétaire de la table précédente. Si nécessaire, la propriété peut être modifiée à l’aide de la commande ALTER TABLE.

Exemples

-- UNDROP using the table name
> CREATE TABLE my_catalog.my_schema.my_table (id INT, name STRING);
> DROP TABLE my_catalog.my_schema.my_table;
> UNDROP TABLE my_catalog.my_schema.my_table;
  OK

-- UNDROP WITH ID
– Use SHOW TABLES DROPPED to find dropped tables
> SHOW TABLES DROPPED IN my_schema;
  catalogname schemaname tablename  tableid                              tabletype deletedat                     createdat                     updatedat                     createdby     owner         comment
  ----------- ---------- ---------- ------------------------------------ --------- ----------------------------- ----------------------------- ----------------------------- ------------- ------------- -------
  my_catalog  my_schema  my_table   6ca7be55-8f58-47a7-85ee-7a59082fd17a managed   2023-05-03 AD at 18:17:56 UTC 2023-05-03 AD at 18:17:00 UTC 2023-05-03 AD at 18:17:00 UTC alf@melmak.et alf@melmak.et
  my_catalog  my_schema  my_table   b819f397-c51f-4e60-8acc-05d4d4a7e084 managed   2023-05-04 AD at 10:20:00 UTC 2023-05-04 AD at 08:20:00 UTC 2023-05-04 AD at 08:20:00 UTC alf@melmak.et alf@melmak.et

–- Undrop a specific dropped table.
–- Here, we undrop my_table with table id '6ca7be55-8f58-47a7-85ee-7a59082fd17a'.
-- Note that the table id will be a string surrounded by single quotation marks.
> UNDROP TABLE WITH ID '6ca7be55-8f58-47a7-85ee-7a59082fd17a';
  OK

– Continuing from the example above, Now we want to undrop table with ID 'b819f397-c51f-4e60-8acc-05d4d4a7e084'.
- First, we rename the existing table
> ALTER TABLE my_table RENAME TO my_other_table
  OK
- Then we can undrop table with the name my_table
> UNDROP TABLE WITH ID 'b819f397-c51f-4e60-8acc-05d4d4a7e084'
  OK