1
0

【Databricks】UNDROP TABLEについて試してみた

Last updated at Posted at 2023-10-26

背景・目的

Unity Catalog support for UNDROP TABLE is GAにあるように、GAが発表されましたが、そもそも、このような機能を知りませんでした。このタイミングで簡単に試してみます。

まとめ

  • Unity Catalog内のマネージドテーブルと外部テーブルを対象にリカバリが可能
  • 対象期間は7日間
  • メタ情報も戻せるが、権限は戻せない。

概要

UNDROP TABLE

Databricksのドキュメントにある UNDROP TABLE を元に整理します。

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

  • 対象は、Unity Catalog内のマネージドテーブルと外部テーブル
  • 対象期間は、7日間
  • 親のスキーマとカタログがあること

同じ名前のドロップされたテーブルが複数ある場合は、 SHOW TABLES DROP を使用してテーブル ID を識別し、 UNDROP TABLE WITH ID を使用して特定のテーブルを復旧できます。

  • SHOW TABLES DROPで、テーブルIDが確認できる

リカバリするテーブルと同じ名前のテーブルがある場合は、 ALTER TABLE RENAME TO コマンドを使用して既存のテーブルの名前を変更します。

テーブル権限、列仕様、プロパティなどのテーブルメタデータがリカバリされます。 主キー制約と外部キー制約は、 UNDROP コマンドでは回復されません。 表がリカバリーされた後、 ALTER TABLE ADD CONSTRAINT を使用して手動で再作成します。

  • テーブルのメタデータもリカバリされる
  • 権限(主キー制約と外部キー制約)はリカバリされないので注意が必要

構文

下記のクエリを実行します。

UNDROP TABLE { table_name | WITH ID table_id }

実践

こちらのドキュメントを元に試してみます。

前提

カタログとスキーマの作成

事前に、カタログとスキーマを作成します。

  1. カタログを作成します。

    CREATE CATALOG my_catalog
    
    SHOW CATALOGS
    
  2. スキーマを作成します。

    CREATE SCHEMA my_catalog.my_schema
    
    SHOW SCHEMAS IN my_catalog
    

UNDROP using the table name

  1. テーブルを作成します。作成されました。

    CREATE TABLE my_catalog.my_schema.my_table (id INT, name STRING);
    SHOW TABLES IN my_catalog.my_schema
    
  2. テーブルを削除します。削除されました。

    DROP TABLE my_catalog.my_schema.my_table
    SHOW TABLES IN my_catalog.my_schema
    
  3. リカバリします。(UNDROPします。)戻りました。

    UNDROP TABLE my_catalog.my_schema.my_table;
    SHOW TABLES IN my_catalog.my_schema
    

UNDROP WITH ID

  1. テーブルを削除します。消えました。

    DROP TABLE my_catalog.my_schema.my_table
    SHOW TABLES IN my_catalog.my_schema
    
  2. 削除済みのテーブルを確認します。tableidをメモします。

    SHOW TABLES DROPPED IN my_catalog.my_schema;
    

    image.png

  3. 下記のクエリを実行し、リカバリします。戻りました。

    UNDROP TABLE WITH ID '{tableid}'
    SHOW TABLES IN my_catalog.my_schema
    

考察

UNDROPテーブルにより、誤って削除したテーブルが戻せることを試しました。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0