DatabricksのUNDROP TABLE

[UNDROP TABLE \| Databricks on AWS](https://docs.databricks.com/sql/language-manual/sql-ref-syntax-ddl-undrop-table.html) [2023/6/12時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

**適用対象:** Databricks SQL、Databricksランタイム12.1以降

:::note info
**プレビュー**
本機能は[パブリックプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。
:::

`UNDROP`コマンドは、Unity Catalogに格納されているマネージド、外部テーブルを不意にドロップ、削除した際の懸念に対応するものです。デフォルトでは、このコマンドは指定されたテーブルのもっとも最近に削除されたテーブルをundrop(リカバー)します。親のスキーマとカタログは存在している必要があります。この機能は、7日間の保持期間に含まれるテーブルのundropをサポートします。

同じ名前で削除されたテーブルが複数ある場合、テーブルIDを特定するために[SHOW TABLES DROPPED](https://docs.databricks.com/sql/language-manual/sql-ref-syntax-aux-show-tables-dropped.html)を活用することができ、特定のテーブルをundropするために`UNDROP TABLE WITH ID`を使うことができます。

undropしたいテーブルと同じ名前のテーブルがある際、既存テーブルの名前を変更するために[ALTER TABLE RENAME TO](https://docs.databricks.com/sql/language-manual/sql-ref-syntax-ddl-alter-table.html)を使うことができます。

テーブルのアクセス権、カラムの仕様やプロパティのようなテーブルメタデータはリカバリーされます。主キーや外部キー制約は`UNDROP`コマンドではリカバリーされません。テーブルをundropした後に[ALTER TABLE ADD CONSTRAINT](https://docs.databricks.com/sql/language-manual/sql-ref-syntax-ddl-alter-table.html)を用いて手動で再作成してください。

# 構文

```sql
UNDROP TABLE { table_anme | WITH ID table_id }
```

# パラメーター

- [table\_name](https://docs.databricks.com/sql/language-manual/sql-ref-names.html#table-name)

    復旧するテーブル名。名前に[temporal specification](https://docs.databricks.com/sql/language-manual/sql-ref-names.html#table-name)を含めることはできません。テーブルが見つからない場合にはエラーが発生します。

- `table_id`

    [SHOW TABLES DROPPED](https://docs.databricks.com/sql/language-manual/sql-ref-syntax-aux-show-tables-dropped.html)で表示されるテーブルのUUIDの形式の`STRING`リテラル。

# 権限

`UNDROP TABLE`には、以下のベース権限のいずれかが必要です:

- ユーザーがテーブルの所有者であり、スキーマに対する`CREATE TABLE`と`USE SCHEMA`権限、カタログに対する`USE CATALOG`権限を持っている。
- ユーザーはスキーマの所有者であり、カタログに対する`USE CATALOG`権限を持っている。
- ユーザーはカタログの所有者である。
- ユーザーはメタストアの所有者である。

ユーザー別のタイプのテーブルをundropする際には、追加の権限が適用されます。例えば、外部テーブルをundropする際には、存在している外部ロケーションやストレージ資格情報に対する`CREATE EXTERNAL TABLE`も必要となります。

コマンドの実行後、オーナーシップのデフォルト値は以前のテーブル所有者となります。必要であれば、`ALTER TABLE`コマンドでオーナーシップを変更することができます。

# サンプル

```sql
-- 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 SCHEMA 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
```

# 関連ドキュメント

- [ALTER TABLE](https://docs.databricks.com/sql/language-manual/sql-ref-syntax-ddl-alter-table.html)
- [SHOW TABLES DROPPED](https://docs.databricks.com/sql/language-manual/sql-ref-syntax-aux-show-tables-dropped.html)

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)