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. 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.
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