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中引发错误。
谢谢,
Impala与Hive共享Metastore。与传统的RDBMS不同,Hive元数据存储在单独的数据库中。在大多数情况下,它在MySQL或Postgres中。如果有权访问metastore数据库,则可以在表TBLS上运行SELECT以获取有关表的详细信息,并在COLUMNS_V2上获取有关列的详细信息。
如果您无权访问元存储,则唯一的选择是描述每个表以获取列名。如果您有许多数据库和表,则可以编写一个shell脚本以使用“显示表”获取表列表,并使用“ desc表名”在表周围循环以描述它们。