分享方式:


UNDROP TABLE

適用於: 檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 12.2 LTS 和更新版本

UNDROP 命令解決了意外卸除或刪除位於 Unity Catalog 之受控或外部表格的問題。 根據預設,此命令會取消卸除特定表格名稱使用者擁有之最近卸除的資料表。 父系結構描述和目錄必須存在。 此功能支援在 7 天保留期間內復原卸除的資料表。

如果有多個相同名稱的卸除數據表,您可以使用 SHOW TABLES DROPD 來識別數據表識別碼,並使用 UNDROP TABLE WITH ID 來復原特定數據表。

如果數據表的名稱與您想要復原的數據表相同,請使用 ALTER TABLE RENAME TO 命令來變更現有資料表的名稱。

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

語法

UNDROP TABLE { table_name | WITH ID table_id }

參數

  • table_name

    要還原之數據表的名稱。 名稱不得包含 時態規格。 如果找不到數據表,Azure Databricks 就會引發錯誤。

  • table_id

    STRING表格 UUID 形式的常值,如 SHOW TABLES DROPD顯示。

權限

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

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

如果使用者正在復原不同類型的數據表,則會套用其他許可權。 例如,若要取消卸除外部數據表,您也必須具有 CREATE EXTERNAL TABLE 必須存在的外部位置或記憶體認證。

執行此命令之後,擁有權預設為上一個數據表擁有者。 如有需要,可以使用 命令來變更 ALTER TABLE 擁有權。

範例

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