UNDROP TABLE
Aplica-se a: Databricks SQL Databricks Runtime 12.2 LTS e superior
O comando UNDROP
aborda a preocupação de tables gerenciados ou externos localizados no Unity Catalog serem acidentalmente descartados ou excluídos.
Por padrão, este comando recupera o table descartado mais recentemente que pertence ao usuário do nome table fornecido.
O schema pai e a catalog devem existir. Este recurso suporta a recuperação de tables eliminados dentro de um período de retenção de 7 dias.
Se houver várias tables descartadas com o mesmo nome, pode usar SHOW TABLES DROPPED para identificar o ID de table e usar UNDROP TABLE WITH ID
para recuperar um tableespecífico.
Se houver um table com o mesmo nome do table que você deseja recuperar, use ALTER TABLE comando RENAME TO para alterar o nome do tableexistente.
Metadados de Table – como privilégios de table, espec. de column e propriedades – serão recuperados.
As restrições de chave primária e estrangeira não são recuperadas UNDROP
pelo comando.
Recrie-os manualmente usando ALTER TABLE ADD CONSTRAINT depois que o table tiver sido recuperado.
Sintaxe
UNDROP TABLE { table_name | WITH ID table_id }
Parâmetro
-
O nome do table a ser restaurado. O nome não deve incluir uma especificação temporal ou uma especificação de opções. Se o table não puder ser encontrado, o Azure Databricks gerará um erro.
table_id
Um
STRING
literal na forma de um UUID do table conforme exibido por SHOW TABLES DROPPED.
Permissões
UNDROP TABLE
requer uma das seguintes permissões básicas:
- Um utilizador é o proprietário do table, tem
CREATE TABLE
eUSE SCHEMA
no schema, eUSE CATALOG
no catalog. - Um utilizador é proprietário do schema e tem
USE CATALOG
no catalog. - Um utilizador é o proprietário do catalog.
- Um usuário é o proprietário do metastore.
- Um usuário tem
MANAGE
no table,CREATE TABLE
eUSE SCHEMA
no schemaeUSE CATALOG
no catalog.
Se um usuário estiver recuperando um tipo diferente de table, permissões adicionais serão aplicadas.
Por exemplo, para descartar um tableexterno, você também deve ter CREATE EXTERNAL TABLE
no local externo ou na credencial de armazenamento, que deve existir.
Depois de executar esse comando, a propriedade volta a ser a do proprietário anterior table.
Se necessário, a propriedade pode ser alterada usando o ALTER TABLE
comando.
Exemplos
-- 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