查询 AWS Glue 数据目录 - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

查询 AWS Glue 数据目录

由于许多 AWS 服务都将 AWS Glue 数据目录 用作其中央元数据存储库,因此您可能需要查询 Data Catalog 元数据。为此,您可以在 Athena 中使用 SQL 查询。您可以使用 Athena 查询 AWS Glue 目录元数据,如数据库、表、分区和列等。

注意

您可以使用单个风团 DDL命令 从Athena提取特定数据库、表格、视图、分区和列的元数据信息,但输出为非表格格式。

要获取 AWS Glue 目录元数据,请查询 Athena 后端上的 information_schema 数据库。本主题中的示例查询显示如何使用 Athena 查询 AWS Glue 目录元数据以搜索常用案例。

重要

不能使用 CREATE VIEWinformation_schema 数据库上创建视图。

列出数据库并搜索指定的数据库

本节中的示例演示如何按模式名称列出元数据中的数据库。

例 – 列出数据库

以下示例查询列出 information_schema.schemata 表中的数据库。

SELECT schema_name FROM information_schema.schemata LIMIT 10;

下表显示了示例结果。

6 alb-databas1
7 alb_original_cust
8 alblogsdatabase
9 athena_db_test
10 athena_ddl_db

例 – 搜索指定的数据库

在以下示例查询中,rdspostgresql 是示例数据库。

SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'rdspostgresql'

下表显示了示例结果。

schema_name
1 rdspostgresql

列出指定数据库中的表并按名称搜索表

要列出表的元数据,您可以按表架构或表名进行查询。

例 – 按架构列出表

以下查询列出了使用 rdspostgresql 表架构的表。

SELECT table_schema, table_name, table_type FROM information_schema.tables WHERE table_schema = 'rdspostgresql'

下图显示了一个示例结果。

table_schema table_name table_type
1 rdspostgresql rdspostgresqldb1_public_account BASE TABLE

例 – 按名称搜索表

以下查询获取表 athena1 的元数据信息。

SELECT table_schema, table_name, table_type FROM information_schema.tables WHERE table_name = 'athena1'

下图显示了一个示例结果。

table_schema table_name table_type
1 default athena1 BASE TABLE

列出特定表的分区

您可以使用元数据查询列出特定表的分区号和分区值。

例 – 查询表的分区

以下示例查询列出了表 CloudTrail_logs_test2 的分区。

SELECT * FROM information_schema.__internal_partitions__ WHERE table_schema = 'default' AND table_name = 'cloudtrail_logs_test2' ORDER BY partition_number

如果查询不能按预期工作,请使用 SHOW PARTITIONS table_name 来提取指定表的分区详细信息,如以下示例所示。

SHOW PARTITIONS CloudTrail_logs_test2

下表显示了示例结果。

table_catalog table_schema table_name partition_number partition_key partition_value
1 awsdatacatalog default (默认) CloudTrail_logs_test2 1 2018
2 awsdatacatalog default (默认) CloudTrail_logs_test2 1 个月 09
3 awsdatacatalog default (默认) CloudTrail_logs_test2 1 day 30

列出或搜索指定表或视图的列

您可以列出表的所有列、视图的所有列,或者在指定的数据库和表中按名称搜索列。

例 – 列出指定表的所有列

以下示例查询列出了 rdspostgresqldb1_public_account 表的所有列。

SELECT * FROM information_schema.columns WHERE table_schema = 'rdspostgresql' AND table_name = 'rdspostgresqldb1_public_account'

下表显示了示例结果。

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type comment extra_info
1 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account 密码 1 varchar
2 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account user_id 2. integer
3 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account created_on 3 timestamp
4 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account last_login 4 timestamp
5 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account email 5* varchar
6 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account username 6 varchar

例 – 列出指定视图的列

以下示例查询列出了 default 数据库中用于 arrayview 视图的所有列。

SELECT * FROM information_schema.columns WHERE table_schema = 'default' AND table_name = 'arrayview'

下表显示了示例结果。

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type comment extra_info
1 awsdatacatalog default arrayview searchdate 1 varchar
2 awsdatacatalog default arrayview sid 2. varchar
3 awsdatacatalog default arrayview btid 3 varchar
4 awsdatacatalog default arrayview p 4 varchar
5 awsdatacatalog default arrayview infantprice 5* varchar
6 awsdatacatalog default arrayview sump 6 varchar
7 awsdatacatalog default arrayview journeymaparray 7. array(varchar)

例 – 在指定的数据库和表中按名称搜索列

以下示例查询在 default 数据库的 arrayview 视图中搜索 sid 列的元数据。

SELECT * FROM information_schema.columns WHERE table_schema = 'default' AND table_name = 'arrayview' AND column_name='sid'

下图显示了一个示例结果。

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type comment extra_info
1 awsdatacatalog default arrayview sid 2. varchar