Sdílet prostřednictvím


UNDROP

Platí pro:označeno jako zaškrtnuto Databricks SQL označeno jako zaškrtnuto Databricks Runtime 12.2 LTS a novější

Příkaz UNDROP se zabývá obavou, že spravované nebo externí relace (tabulky nebo materializovaná zobrazení) umístěné v Unity Katalogu mohou být omylem odstraněny nebo smazány. Ve výchozím nastavení tento příkaz vrátí zpět (obnoví) naposledy vyřazený vztah vlastněný uživatelem daného názvu relace. Nadřazené schéma a katalog musí existovat. Tato funkce podporuje obnovení ukončených relací během 7denní doby uchovávání.

Pokud existuje několik vyřazených relací stejného názvu, můžete pomocí SHOW TABLES DROPPED identifikovat ID tabulky a pomocí UNDROP TABLE WITH ID obnovit konkrétní relaci.

Pokud existuje vztah se stejným názvem jako relace, kterou chcete obnovit, použijte příkaz ALTER TABLE PŘEJMENOVAT na změnit název existující relace.

Metadata tabulky , jako jsou oprávnění tabulky, specifikace sloupce a vlastnosti, se obnoví. Příkaz UNDROP neobnoví omezení primárního a cizího klíče. Po obnovení tabulky je znovu vytvořte ručně pomocí ALTER TABLE ADD CONSTRAINT.

Syntaxe

UNDROP { MATERIALIZED VIEW | TABLE } { relation_name | WITH ID relation_id }

Parametr

  • MATERIALIZED VIEW

    platí pro:zaškrtněte políčko Ano Databricks SQL zaškrtněte políčko Ano Databricks Runtime 16.2 a novější

    Určuje, že vztah relation_name, který má být obnoven, je materializované zobrazení.

  • TABLE

    Určuje, že relační relation_name, která se má obnovit, je tabulka.

  • název_relace

    Název tabulky, která se má obnovit. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností. Pokud nelze najít vztah nebo typ podle specifikace, Azure Databricks vyvolá chybu WRONG_COMMAND_FOR_OBJECT_TYPE nebo TABLE_OR_VIEW_NOT_FOUND.

  • relation_id

    Literál STRING ve formě UUID relace, jak ji zobrazuje SHOW TABLES DROPPED.

Oprávnění

UNDROP vyžaduje jednu z následujících základních oprávnění:

  • Uživatel je vlastníkem relace, má CREATE TABLE a USE SCHEMA schématu a USE CATALOG v katalogu.
  • Uživatel je vlastníkem schématu a má USE CATALOG v katalogu.
  • Uživatel je vlastníkem katalogu.
  • Uživatel je vlastníkem datového úložiště (metastore).
  • Uživatel má MANAGE na tabulce, CREATE TABLE a USE SCHEMA na schématu a USE CATALOG v katalogu.

Pokud uživatel obnovuje jiný typ tabulky, použijí se další oprávnění. Pokud chcete například vrátit zpět externí tabulku, musíte mít také CREATE EXTERNAL TABLE pro externí umístění nebo přihlašovací údaje k úložišti, které musí být existující.

Po spuštění tohoto příkazu se vlastnictví ve výchozím nastavení nastaví na předchozího vlastníka relace. V případě potřeby je možné vlastnictví změnit pomocí příkazu ALTER TABLE nebo ALTER MATERIALIZED VIEW.

Omezení

Materializovaná zobrazení a streamované tabulky je možné obnovit pouze v případě, že podkladový datový kanál stále existuje. Pokud bylo odstraněno podpůrné potrubí, nelze materializované zobrazení nebo streamovací tabulku obnovit.

Nelze obnovit materializovanou tabulku nebo tabulku streamování vytvořenou pomocí Databricks SQL. Je možné obnovit pouze materializovaná zobrazení nebo streamované tabulky vytvořené pomocí kanálu ETL. Materializovaná zobrazení můžete obnovit pouze podle ID, nikoli podle názvu.

Příklady

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

-- Assume the following commands created MVs in an ETL pipeline
> CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM RANGE(5);
> CREATE MATERIALIZED VIEW mv2 AS SELECT * FROM mv1;

-- Drop the MVs
> DROP MATERIALIZED VIEW mv1;
> DROP MATERIALIZED VIEW mv2;

-- UNDROP WITH ID
-- Use SHOW TABLES DROPPED to find the dropped mv2's tableId
-- Assume it is 6ca7be55-8f58-47a7-85ee-7a59082fd17a
-- When undropping, note that the table id will be a string surrounded by single quotation marks.
> UNDROP MATERIALIZED VIEW WITH ID '6ca7be55-8f58-47a7-85ee-7a59082fd17a';
  OK