在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上获取有关列的详细信息。
如果您无权访问元存储,则唯一的选择是描述每个表以获取列名。如果您有许多数据库和表,则可以编写一个shell脚本以使用“显示表”获取表列表,并使用“ desc表名”在表周围循环以描述它们。