Impala - 查找具有特定列的表

时间:2017-11-14 19:03:53

标签: sql hadoop cloudera impala

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

类似的东西:

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

上述查询在teradata环境中有效,但在Impala中会抛出错误。

谢谢,

1 个答案:

答案 0 :(得分:5)

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

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