如何在单条查询中获取Athena数据库所有表的表名及对应行数
AWS Athena单查询获取所有表名及对应行数方案
你可以通过以下两种方式实现需求,输出标准的table_name、row_count两列结果:
方案1:直接修改UNION ALL拼接逻辑(表数量较少时适用)
在每个COUNT子查询中新增固定值的表名字段,无需依赖返回顺序匹配,示例如下:
SELECT 'table_name' AS table_name, COUNT(*) AS row_count FROM table_name UNION ALL SELECT 'table2_name' AS table_name, COUNT(*) AS row_count FROM table2_name UNION ALL -- 其余表查询按相同格式拼接即可
运行后直接返回一一对应的表名和行计数结果。
方案2:自动生成查询语句(表数量较多时适用)
先通过information_schema生成完整的UNION ALL查询语句,再复制生成的语句执行即可,无需手动拼接每张表:
- 运行以下SQL生成目标查询语句,注意替换
<你的数据库名>:
SELECT array_join(array_agg( format('SELECT \'%s\' AS table_name, COUNT(*) AS row_count FROM "%s"', table_name, table_name) ), ' UNION ALL ') AS generated_sql FROM information_schema.tables WHERE table_schema = '<你的数据库名>';
- 复制上一步返回的
generated_sql字段内容,直接在Athena中运行即可得到所有表的名和对应行数。
注意:上述生成语句中给表名加了双引号包裹,可兼容表名包含特殊字符、保留字的场景。
内容的提问来源于stack exchange,提问作者GBiebs
相关产品推荐
相关产品推荐

