UNDROP TABLE

適用対象:check marked yes Databricks SQL Databricks Runtime 12.2 LTS 以降

UNDROP コマンドを使うと、Unity Catalog にあるマネージド テーブルまたは外部テーブルが誤って破棄されたり削除されたりする問題に対処できます。 既定では、このコマンドを実行すると、指定したテーブル名のユーザーが所有する最後に削除されたテーブルが削除解除 (復旧) されます。 親スキーマとカタログが存在している必要があります。 この機能では、7 日間の保持期間内に削除されたテーブルの復旧がサポートされます。

削除された同じ名前のテーブルが複数ある場合は、SHOW TABLES DROPPED を使ってテーブル ID を確認し、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

    SHOW TABLES DROPPED によって表示されるテーブルの UUID 形式の STRING リテラル。

アクセス許可

UNDROP TABLE には、次の基本アクセス許可のいずれかが必要です。

  • ユーザーがテーブルの所有者であり、スキーマに対して CREATE TABLEUSE 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