共用方式為


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 管線建立的具體化檢視或串流數據表。

範例

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

—- Create some MVs
> 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 using the table name
> UNDROP MATERIALIZED VIEW mv1;
  OK

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