TABELA NÃO REMOVIDA
Aplica-se a: SQL do Databricks Databricks Runtime 12.2 LTS e superior
O comando UNDROP
aborda a questão da remoção ou exclusão acidentais de tabelas gerenciadas ou externas localizadas no Catálogo do Unity.
Por padrão, esse comando reverte a remoção (recupera) da tabela removida mais recentemente pertencente ao usuário do nome de tabela fornecido.
O esquema pai e o catálogo devem existir. Esse recurso dá suporte à recuperação de tabelas removidas dentro de um período de retenção de 7 dias.
Se houver várias tabelas removidas de mesmo nome, você poderá usar SHOW TABLES DROPPED para identificar a ID da tabela e usar UNDROP TABLE WITH ID
para recuperar uma tabela específica.
Se houver uma tabela com o mesmo nome que a tabela que você deseja recuperar, use o comando ALTER TABLE RENAME TO para alterar o nome da tabela existente.
Metadados de tabela – como privilégios de tabela, especificação de coluna e propriedades – serão recuperados.
As restrições de chave primária e estrangeira não são recuperadas pelo comando UNDROP
.
Recrie-as manualmente usando ALTER TABLE ADD CONSTRAINT depois que a tabela for recuperada.
Sintaxe
UNDROP TABLE { table_name | WITH ID table_id }
Parâmetro
-
O nome da tabela a ser restaurada. O nome não deve incluir uma especificação temporal ou especificação de opções. Se a tabela não puder ser localizada, o Azure Databricks gerará um erro.
table_id
Um
STRING
literal na forma de um UUID da tabela, conforme exibido por SHOW TABLES DROPPED.
Permissões
UNDROP TABLE
exige uma das seguintes permissões de base:
- Um usuário é o proprietário da tabela, tem
CREATE TABLE
eUSE SCHEMA
no esquema eUSE CATALOG
no catálogo. - Um usuário é o proprietário do esquema e tem
USE CATALOG
no catálogo. - Um usuário é o proprietário do catálogo.
- Um usuário é o proprietário do metastore.
- Um usuário tem
MANAGE
na tabela,CREATE TABLE
eUSE SCHEMA
no esquema eUSE CATALOG
no catálogo.
Se um usuário estiver recuperando um tipo diferente de tabela, serão aplicadas permissões adicionais.
Por exemplo, para cancelar a remoção de uma tabela externa, você também precisa ter CREATE EXTERNAL TABLE
no local externo ou na credencial de armazenamento, que precisa existir.
Depois de executar esse comando, a propriedade assume como padrão o proprietário da tabela anterior.
Se necessário, a propriedade pode ser alterada usando o comando ALTER TABLE
.
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