You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取AWS Glue数据库与表元数据用于库存报告(含创建时间)

获取AWS Glue Catalog数据库与表清单(含创建时间)

Athena的information_schema无法返回Glue Catalog对象的创建时间,不管表是通过SQL DDL还是其他方式创建的,都可以通过以下方案获取所需元数据:

方案1:Python + Boto3脚本批量导出(推荐)

直接调用AWS Glue API可以可靠获取所有数据库和表的创建时间,脚本会自动遍历并导出为CSV格式,方便导入QuickSight或元数据系统:

import boto3
import csv

# 初始化Glue客户端
glue_client = boto3.client('glue')

# 初始化输出表头
inventory_rows = [
    ["数据库名称", "数据库创建时间", "表名称", "表创建时间", "表类型"]
]

# 遍历所有数据库
for db in glue_client.get_databases()['DatabaseList']:
    db_name = db['Name']
    db_create_time = db['CreateTime'].strftime('%Y-%m-%d %H:%M:%S')
    
    # 遍历当前数据库下的所有表
    for table in glue_client.get_tables(DatabaseName=db_name)['TableList']:
        table_name = table['Name']
        table_create_time = table['CreateTime'].strftime('%Y-%m-%d %H:%M:%S')
        table_type = table.get('TableType', 'UNKNOWN')
        
        inventory_rows.append([db_name, db_create_time, table_name, table_create_time, table_type])

# 导出为CSV文件
with open('glue_catalog_inventory.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerows(inventory_rows)

print("清单已导出到 glue_catalog_inventory.csv")

使用说明:

  • 确保执行脚本的IAM身份拥有glue:GetDatabases和glue:GetTables权限
  • 导出的CSV可直接上传到S3,之后在QuickSight中创建数据集即可使用
  • 可以将脚本部署到Lambda,设置定时触发实现清单自动更新

方案2:AWS CLI + jq批量导出

如果偏好命令行工具,可通过CLI结合jq处理输出:

# 导出所有数据库信息(名称+创建时间)
aws glue get-databases --query "DatabaseList[].[Name, CreateTime]" --output json | jq -r '.[] | @csv' > glue_databases.csv

# 遍历数据库,导出对应表信息
for db in $(aws glue get-databases --query "DatabaseList[].Name" --output text); do
  aws glue get-tables --database-name "$db" --query "TableList[].[Name, CreateTime, TableType]" --output json | jq -r --arg db "$db" '.[] | [$db] + . | @csv' >> glue_tables.csv
done

使用说明:

  • 需提前安装jq工具
  • 可手动合并glue_databases.csv和glue_tables.csv,或在QuickSight中关联两个数据集

方案3:Athena查询间接实现

如果需要通过Athena访问这份清单,可将方案1/2导出的CSV上传到S3,然后创建Athena外部表:

CREATE EXTERNAL TABLE glue_catalog_inventory (
  database_name STRING,
  database_create_time STRING,
  table_name STRING,
  table_create_time STRING,
  table_type STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = ',',
  'field.delim' = ','
)
LOCATION 's3://your-bucket/path/to/glue-inventory/'
TBLPROPERTIES ('has_encrypted_data'='false');

之后即可用Athena查询:

SELECT * 
FROM glue_catalog_inventory 
ORDER BY database_create_time DESC, table_create_time DESC;

内容的提问来源于stack exchange,提问作者Jeff A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:23:10