TABELA NÃO REMOVIDA

Aplica-se a: verificação marcada como sim SQL do Databricks marca de verificação sim 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

  • table_name

    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 e USE SCHEMA no esquema e USE 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