雅典娜相当于information_schema
Athena equivalent to information_schema
对于背景,我来自 SQLServer 背景并大量使用系统 tables 和 information_schema,告诉我关于我的 tables 和专栏的所有信息。
我没想到雅典娜有完全相同的力量,但目前对似乎可用的东西感到非常震惊和沮丧 - 除非我错过了什么?
例如,'describe mytable' - 一次只描述 1 table。
如何在一个结果中显示所有 table 的列?
它也不会输出 table 名称,也不允许您手动将其添加为自定义列。
这些 "show/list/describe" 命令的所有结果似乎都生成一个文本列表 - 而不是记录集,因此您不能获取结果并将它们加入其他 table 或视图以使其更复杂输出。
有没有其他方法可以查询我的数据库的内容?
提前致谢
Athena 基于 Presto。 Presto 提供 information_schema
架构,我检查过它可以在 Athena 中访问。
您可以 运行 例如查询如:
SELECT * FROM information_schema.columns;
获取所有表的列列表。
您可以通过 "database" 过滤:
SELECT * FROM information_schema.columns WHERE table_schema = '<databasename>';
但是请注意,这些类型的查询不一定非常高效。
对于背景,我来自 SQLServer 背景并大量使用系统 tables 和 information_schema,告诉我关于我的 tables 和专栏的所有信息。
我没想到雅典娜有完全相同的力量,但目前对似乎可用的东西感到非常震惊和沮丧 - 除非我错过了什么?
例如,'describe mytable' - 一次只描述 1 table。 如何在一个结果中显示所有 table 的列? 它也不会输出 table 名称,也不允许您手动将其添加为自定义列。
这些 "show/list/describe" 命令的所有结果似乎都生成一个文本列表 - 而不是记录集,因此您不能获取结果并将它们加入其他 table 或视图以使其更复杂输出。
有没有其他方法可以查询我的数据库的内容?
提前致谢
Athena 基于 Presto。 Presto 提供 information_schema
架构,我检查过它可以在 Athena 中访问。
您可以 运行 例如查询如:
SELECT * FROM information_schema.columns;
获取所有表的列列表。
您可以通过 "database" 过滤:
SELECT * FROM information_schema.columns WHERE table_schema = '<databasename>';
但是请注意,这些类型的查询不一定非常高效。