Impala-查找哪些表具有特定列

acv*_*sql 1 sql hadoop cloudera impala

在Impala中,是否可以检查数据库中的哪些表包含特定的列名?

就像是:

select tablename, columnname
from dbc.columns
where databasename = 'mydatabasename'
and columnname like '%findthis%'
order by tablename
Run Code Online (Sandbox Code Playgroud)

上面的查询在Teradata环境中工作,但是在Impala中引发错误。

谢谢,

Ram*_*esh 5

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

如果您无权访问元存储,则唯一的选择是描述每个表以获取列名。如果您有许多数据库和表,则可以编写一个shell脚本以使用“显示表​​”获取表列表,并使用“ desc表名”在表周围循环以描述它们。