使用 AWS CLI 重新创建 AWS Glue 数据库及其表
无法直接重命名 AWS Glue 数据库,但可以复制其定义,修改定义,然后使用该定义重新创建具有其他名称的数据库。同样,您可以复制旧数据库中的表定义,修改定义,然后使用修改后的定义在新数据库中重新创建表。
注意
所提供的方法不会复制表分区。
适用于 Windows 的以下过程假设 AWS CLI 已针对 JSON 输出进行配置。要更改 AWS CLI 中的默认输出格式,运行 aws configure
。
使用 AWS CLI 复制 AWS Glue 数据库
-
在命令提示符处,运行以下 AWS CLI 命令检索要复制的 AWS Glue 数据库的定义。
aws glue get-database --name
database_name
有关
get-database
命令的更多信息,请参阅 get-database。 -
将 JSON 输出保存到桌面上以新数据库名称命名的文件中(例如,
)。new_database_name
.json -
在文本编辑器中打开
文件。new_database_name
.json -
在 JSON 文件中,执行以下步骤:
-
移除文件末尾的外部
{ "Database":
条目和相应的右大括号}
。 -
将
Name
条目更改为新的数据库名称。 -
删除
CatalogId
字段。
-
-
保存该文件。
-
在命令提示符处,运行以下 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 参数。 -
要验证是否已在 AWS Glue 中创建新数据库,请运行以下命令:
aws glue get-database --name
new_database_name
现在,您可以随时获取要复制到新数据库的表的定义,修改定义,然后使用修改后的定义在新数据库中重新创建表。此过程不会更改表名称。
使用 AWS CLI 复制 AWS Glue 表
-
在命令提示符处,运行以下 AWS CLI 命令。
aws glue get-table --database-name
database_name
--nametable_name
有关
get-table
命令的更多信息,请参阅 get-table。 -
将 JSON 输出保存到 Windows 桌面上以表名称命名的文件中(例如,
table_name
.json)。 -
在文本编辑器中打开该文件。
-
在 JSON 文件中,移除文件末尾的外部
{"Table":
条目和相应的右大括号}
。 -
在 JSON 文件中,移除以下条目及其值:
-
DatabaseName
- 此条目不是必需项,因为create-table
CLI 命令使用--database-name
参数。 -
CreateTime
-
UpdateTime
-
CreatedBy
-
IsRegisteredWithLakeFormation
-
CatalogId
-
VersionId
-
-
保存表定义文件。
-
在命令提示符处,运行以下 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 进行查询。
-
重复上述步骤,将每个附加表复制到 AWS Glue 的新数据库中。