共用方式為


UNDROP

適用於:選取標記為「是」 Databricks SQL 選取標記為「是」 Databricks Runtime 12.2 LTS 及以上版本

UNDROP 命令可處理 Unity 目錄中托管或外部的關聯關係(數據表或具體化檢視表)被意外刪除的問題。 根據預設,此命令會恢復使用者所擁有的指定關聯名稱中,最近被刪除的資料關聯。 父系結構描述和目錄必須存在。 此功能支援在 7 天的保留期間內復原已刪除的資料庫關係。

如果有多個已刪除且同名的關聯,您可以使用 SHOW TABLES DROPPED 來識別資料表 ID,並使用 UNDROP TABLE WITH ID 來還原特定關聯。

如果有與您想要復原之關聯名稱相同的關聯,請使用 ALTER TABLE RENAME TO 命令來變更現有關聯的名稱。

將會復原數據表元數據,例如數據表許可權、數據行規格和屬性。 命令不會復原主鍵和外鍵的約束UNDROP。 在復原數據表之後,使用 ALTER TABLE ADD CONSTRAINT 手動重新建立它們。

語法

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

參數

  • MATERIALIZED VIEW

    適用於:勾選為 yes Databricks SQL 勾選為 yes Databricks Runtime 16.2 及以上版本

    指定將還原的關係 relation_name 是實體化視圖。

  • TABLE

    指定要還原的關聯 relation_name 是一個資料表。

  • relation_name

    要恢復的資料表名稱。 名稱不得包含 時態規格或選項規格。 如果找不到指定的關聯性或類型,Azure Databricks 會引發 WRONG_COMMAND_FOR_OBJECT_TYPETABLE_OR_VIEW_NOT_FOUND

  • relation_id

    STRING所顯示的關聯 UUID 形式的 SHOW TABLES DROPPED 字面值。

權限

UNDROP 需要下列其中一個基本許可權:

  • 使用者是關聯擁有者、在架構上具有 CREATE TABLEUSE SCHEMA,以及目錄上的 USE CATALOG
  • 使用者是架構的擁有者,而且在目錄上具有 USE CATALOG
  • 用戶是目錄的擁有者。
  • 使用者是中繼存放區的擁有者。
  • 使用者具有數據表上的 MANAGE、架構上的 CREATE TABLEUSE SCHEMA,以及目錄上的 USE CATALOG

如果使用者正在復原不同類型的數據表,則會套用其他許可權。 例如,若要恢復已刪除的外部表格,您必須擁有在外部位置或存儲授權上的CREATE EXTERNAL TABLE,這些項必須存在。

執行此命令之後,擁有權預設為先前的關係擁有者。 如有需要,可以使用 ALTER TABLEALTER MATERIALIZED VIEW 命令來變更擁有權。

局限性

只有在後端管線仍然存在時,才能還原具現化視圖和流式表。 如果備份管線已刪除,具體化檢視或串流數據表將無法復原。

您無法還原使用 Databricks SQL 建立的具體化檢視或串流數據表。 只能還原使用 ETL 管線建立的具體化檢視或串流數據表。 你只能依 ID 還原實體化視圖,不能依名稱還原。

範例

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