

# AWS CLI を使用して AWS Glue データベースとそのテーブルを再度作成する
<a name="glue-recreate-db-and-tables-cli"></a>

AWS Glue データベースの名前を直接変更することはできませんが、その定義をコピーして定義を変更し、その定義を使用してデータベースを別の名前で再度作成することができます。同様に、古いデータベースのテーブルの定義をコピーして、その定義を変更し、変更した定義を使用して新しいデータベースにテーブルを再度作成することができます。

**注記**  
 ここで示した方法では、テーブルのパーティショニングはコピーされません。

次の Windows での手順では、お客様の AWS CLI に JSON 出力が設定されていることを前提としています。AWS CLI のデフォルトの出力形式を変更するには、`aws configure` を実行します。

**AWS CLI を使用して AWS Glue データベースをコピーする方法**

1. コマンドプロンプトで次の AWS CLI コマンドを実行し、コピーする AWS Glue データベースの定義を取得します。

   ```
   aws glue get-database --name {{database_name}}
   ```

   `get-database` コマンドの詳細については、「[get-database](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-database.html)」を参照してください。

1. JSON 出力を、新しいデータベースの名前が付けられたファイル (例: `{{new_database_name}}.json`) としてデスクトップに保存します。

1. テキストエディタで `{{new_database_name}}.json` ファイルを開きます。

1. JSON ファイルで以下の手順を実行します。

   1. 外側の `{ "Database":` エントリと、ファイルの最後にある対応する閉じ括弧 `}` を削除します。

   1. `Name` エントリを新しいデータベース名に変更します。

   1. `CatalogId` フィールドを削除します。

1. ファイルを保存します。

1. コマンドプロンプトで次の AWS CLI コマンドを実行し、変更したデータベース定義ファイルを使用して、新しい名前でデータベースを作成します。

   ```
   aws glue create-database --database-input "file://~/Desktop\{{new_database_name}}.json"
   ```

   `create-database` コマンドの詳細については、「[create-database](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-database.html)」を参照してください。ファイルから AWS CLI パラメータを読み込む方法の詳細については、「AWS Command Line Interface ユーザーガイド」の「[ファイルから AWS CLI パラメータを読み込む](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html)」を参照してください。

1. 新しいデータベースが AWS Glue に作成されたことを確認するには、次のコマンドを実行します。

   ```
   aws glue get-database --name {{new_database_name}}
   ```

これで、新しいデータベースにコピーするテーブルの定義を取得し、定義を変更して、変更した定義を使用して新しいデータベースにテーブルを再度作成する準備ができました。この手順でテーブル名は変更されません。

**AWS CLI を使用して AWS Glue テーブルをコピーする方法**

1. コマンドプロンプトで、次の AWS CLI コマンドを実行します。

   ```
   aws glue get-table --database-name {{database_name}} --name {{table_name}}
   ```

   `get-table` コマンドの詳細については、「[get-table](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-table.html)」を参照してください。

1. JSON 出力を、テーブルの名前が付けられたファイル (例: {{table\_name}}.json) として Windows デスクトップに保存します。

1. テキストエディタで ファイルを開きます。

1. JSON ファイルで、外部 `{"Table": ` エントリとファイルの最後にあるそれに対応する閉じ括弧 `}` を削除します。

1. JSON ファイルで、次のエントリとその値を削除します。
   + `DatabaseName` — `create-table` CLI コマンドは `--database-name` パラメータを使用するため、このエントリは必要ありません。
   + `CreateTime`
   + `UpdateTime`
   + `CreatedBy`
   + `IsRegisteredWithLakeFormation`
   + `CatalogId`
   + `VersionId`

1. テーブル定義ファイルを保存します。

1. コマンドプロンプトで次の AWS CLI コマンドを実行し、新しいデータベースにテーブルを再度作成します。

   ```
   aws glue create-table --database-name {{new_database_name}} --table-input "file://~/Desktop\{{table_name}}.json"     
   ```

   `create-table` コマンドの詳細については、「[create-table](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-table.html)」を参照してください。

   これで、テーブルが AWS Glue の新しいデータベースに表示され、Athena からクエリできるようになりました。

1. 手順を繰り返して、追加する各テーブルを AWS Glue の新しいデータベースにコピーします。