使用 AWS CLI 重新创建 AWS Glue 数据库及其表 - Amazon Athena

使用 AWS CLI 重新创建 AWS Glue 数据库及其表

无法直接重命名 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

  2. 将 JSON 输出保存到桌面上以新数据库名称命名的文件中(例如,new_database_name.json)。

  3. 在文本编辑器中打开 new_database_name.json 文件。

  4. 在 JSON 文件中,执行以下步骤:

    1. 移除文件末尾的外部 { "Database": 条目和相应的右大括号 }

    2. Name 条目更改为新的数据库名称。

    3. 删除 CatalogId 字段。

  5. 保存该文件。

  6. 在命令提示符处,运行以下 AWS CLI 命令使用修改后的数据库定义文件创建具有新名称的数据库。

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

    有关 create-database 命令的更多信息,请参阅 create-database。有关从文件中加载 AWS CLI 参数的更多信息,请参阅《AWS Command Line Interface 用户指南》中的从文件中加载 AWS CLI 参数

  7. 要验证是否已在 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

  2. 将 JSON 输出保存到 Windows 桌面上以表名称命名的文件中(例如,table_name.json)。

  3. 在文本编辑器中打开该文件。

  4. 在 JSON 文件中,移除文件末尾的外部 {"Table": 条目和相应的右大括号 }

  5. 在 JSON 文件中,移除以下条目及其值:

    • DatabaseName - 此条目不是必需项,因为 create-table CLI 命令使用 --database-name 参数。

    • CreateTime

    • UpdateTime

    • CreatedBy

    • IsRegisteredWithLakeFormation

    • CatalogId

    • VersionId

  6. 保存表定义文件。

  7. 在命令提示符处,运行以下 AWS CLI 命令在新数据库中重新创建表:

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

    有关 create-table 命令的更多信息,请参阅 create-table

    现在,该表出现在 AWS Glue 的新数据库中,可以从 Athena 进行查询。

  8. 重复上述步骤,将每个附加表复制到 AWS Glue 的新数据库中。