

# 使用 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 输出保存到 Windows 桌面上以表名称命名的文件中（例如，{{table\_name}}.json）。

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 的新数据库中。