Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures
La commande UNDROP répond au problème de suppression ou d’annulation accidentelle des relations managées ou externes (tables ou vues matérialisées) situées dans Unity Catalog.
Par défaut, cette commande annule (récupère) la relation la plus récemment supprimée appartenant à l’utilisateur du nom de relation donné.
Le schéma parent et le catalogue doivent exister. Cette fonctionnalité permet de récupérer les relations supprimées pendant une période de rétention de 7 jours.
S’il existe plusieurs relations supprimées du même nom, vous pouvez utiliser SHOW TABLES DROPPED pour identifier l’ID de table et l’utiliser UNDROP TABLE WITH ID pour récupérer une relation spécifique.
S’il existe une relation portant le même nom que la relation que vous souhaitez récupérer, utilisez ALTER TABLE la commande RENAME TO pour modifier le nom de la relation 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 restaurée.
Syntaxe
UNDROP { MATERIALIZED VIEW | TABLE } { relation_name | WITH ID relation_id }
Paramètre
MATERIALIZED VIEWS’applique à :
Databricks SQL
Databricks Runtime 16.2 et versions ultérieuresSpécifie que la relation
relation_nameà restaurer est une vue matérialisée.TABLESpécifie que la relation
relation_nameà restaurer est une table.-
Nom de la table à restaurer. Le nom ne doit pas inclure de spécification temporelle ou de spécification d’options. Si la relation ou le type tel que spécifié est introuvable, Azure Databricks déclenche
WRONG_COMMAND_FOR_OBJECT_TYPEouTABLE_OR_VIEW_NOT_FOUND. relation_idUn littéral
STRINGsous la forme d’un UUID de la relation comme indiqué par SHOW TABLES DROPPED.
Autorisations
UNDROP requiert l'une des autorisations de base suivantes :
- Un utilisateur est le propriétaire de la relation, a
CREATE TABLEetUSE SCHEMAsur le schéma etUSE CATALOGsur le catalogue. - Un utilisateur est le propriétaire du schéma et a
USE CATALOGsur le catalogue. - Un utilisateur est le propriétaire du catalogue.
- Un utilisateur est le propriétaire du metastore.
- Un utilisateur a
MANAGEsur la table,CREATE TABLEetUSE SCHEMAsur le schéma etUSE CATALOGsur le catalogue.
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 à l'ancien propriétaire de la relation. Si nécessaire, la propriété peut être modifiée à l’aide de la commande ALTER TABLE ou de la commande ALTER MATERIALIZED VIEW.
Limites
Les vues matérialisées et les tables de streaming ne peuvent être restaurées que si le pipeline sous-jacent existe toujours. Si le pipeline sous-jacent a été supprimé, la vue matérialisée ou la table de diffusion en continu ne sera pas récupérable.
Vous ne pouvez pas restaurer une vue matérialisée ou une table de diffusion en continu créée avec Databricks SQL. Seules les vues matérialisées ou les tables de diffusion en continu créées avec un pipeline ETL peuvent être restaurées. Vous pouvez uniquement restaurer des vues matérialisées par ID, et non par nom.
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
-- Assume the following commands created MVs in an ETL pipeline
> CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM RANGE(5);
> CREATE MATERIALIZED VIEW mv2 AS SELECT * FROM mv1;
-- Drop the MVs
> DROP MATERIALIZED VIEW mv1;
> DROP MATERIALIZED VIEW mv2;
-- UNDROP WITH ID
-- Use SHOW TABLES DROPPED to find the dropped mv2's tableId
-- Assume it is 6ca7be55-8f58-47a7-85ee-7a59082fd17a
-- When undropping, note that the table id will be a string surrounded by single quotation marks.
> UNDROP MATERIALIZED VIEW WITH ID '6ca7be55-8f58-47a7-85ee-7a59082fd17a';
OK