在 Impala 中,有没有办法检查数据库中的哪些表包含特定的列名?

就像是:

select tablename, columnname
from dbc.columns
where databasename = 'mydatabasename'
and columnname like '%findthis%'
order by tablename

上述查询在 teradata 环境中有效,但在 Impala 中引发错误。

谢谢,

最佳答案

Impala 与 Hive 共享 Metastore。与传统的 RDBMS 不同,Hive 元数据存储在单独的数据库中。在大多数情况下,它在 MySQL 或 Postgres 中。如果您有权访问 Metastore 数据库,则可以在表 TBLS 上运行 SELECT 以获取有关表的详细信息和 COLUMNS_V2 以获取有关列的详细信息。

如果您无权访问 Metastore,唯一的选择是描述每个表以获取列名。如果你有很多数据库和表,你可以编写一个 shell 脚本来使用“show tables”获取表列表,并使用“desc tablename”循环表来描述它们。

关于sql - Impala - 查找哪些表具有特定列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47293420/

10-12 23:46