Partilhar via


TABELA DE DESCARTE

Aplica-se a: Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior

O comando UNDROP refere-se às tabelas geridas ou externas localizadas no Unity Catalog serem excluídas ou eliminadas acidentalmente. Por predefinição, este comando anula a remoção da tabela (recupera-a) do utilizador do nome da tabela fornecida. O esquema principal e o catálogo têm de existir. Esta funcionalidade suporta a recuperação de tabelas excluídas num período de retenção de 7 dias.

Se houver várias tabelas descartadas com o mesmo nome, você poderá usar SHOW TABLES DROPPED para identificar o ID da tabela e usá-la UNDROP TABLE WITH ID para recuperar uma tabela específica.

Se houver uma tabela com o mesmo nome da tabela que você deseja recuperar, use o comando ALTER TABLE RENAME TO para alterar o nome da tabela existente.

Os metadados da 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 UNDROP pelo comando. Recrie-os 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 encontrada, 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 requer uma das seguintes permissões básicas:

  • 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, permissões adicionais serão aplicadas. Por exemplo, para descartar uma tabela externa, você também deve ter CREATE EXTERNAL TABLE no local externo ou credencial de armazenamento, que deve 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 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