如何在AWS Data Catalog中克隆abc-prod-db至abc-prod-db-bkup?
复制AWS Data Catalog数据库及表的最简方案
针对你要复制abc-prod-db到abc-prod-db-bkup(含25张带数据的表)的需求,推荐两种最简实现方式:
方法一:Glue控制台手动导出导入(适合小批量手动操作)
- 导出源库元数据:打开AWS Glue控制台,进入数据库列表,找到
abc-prod-db,点击右侧操作菜单的「导出」,选择JSON格式下载到本地。 - 修改元数据文件:打开下载的JSON,全局替换所有
DatabaseName字段值为abc-prod-db-bkup;同时根据数据存储位置,修改每个表StorageDescriptor下的Location路径为目标存储路径(比如S3的新前缀)。 - 创建目标数据库:在Glue控制台点击「添加数据库」,输入名称
abc-prod-db-bkup完成创建。 - 导入元数据:进入
abc-prod-db-bkup的详情页,点击「导入表」,上传修改后的JSON文件,完成表结构的复制。 - 同步表数据:如果数据存在S3,直接在S3控制台用「复制」或
aws s3 sync同步对应路径;如果是RDS等数据库,可配置Glue一次性作业批量读取源表写入目标表。
方法二:AWS CLI脚本批量处理(适合自动化场景)
- 先创建目标数据库:
aws glue create-database --database-input '{"Name": "abc-prod-db-bkup"}' - 批量复制表元数据(需提前安装
jq工具处理JSON):# 获取源库所有表名 TABLES=$(aws glue get-tables --database-name abc-prod-db --query 'TableList[].Name' --output text) for TABLE in $TABLES; do # 获取源表完整定义 TABLE_DEF=$(aws glue get-table --database-name abc-prod-db --name $TABLE) # 修改库名和数据路径 MODIFIED_DEF=$(echo "$TABLE_DEF" | jq '.TableInput.DatabaseName = "abc-prod-db-bkup"' | jq '.TableInput.StorageDescriptor.Location = "s3://your-target-bucket/abc-prod-db-bkup/"') # 创建目标表 aws glue create-table --database-name abc-prod-db-bkup --table-input "$(echo "$MODIFIED_DEF" | jq '.TableInput')" done - 同步数据:S3数据用
s3 sync批量同步:aws s3 sync s3://your-source-bucket/abc-prod-db/ s3://your-target-bucket/abc-prod-db-bkup/
注意事项
- 若表包含分区,元数据导入会自动携带分区定义,但需同步分区对应的数据路径。
- 确保操作账号拥有Glue数据库/表的读写权限,以及对应存储服务的访问权限。
内容的提问来源于stack exchange,提问作者PPSATO
相关产品推荐
相关产品推荐

