在Impala中,有没有办法检查数据库中的哪些表包含特定的列名?
类似的东西:
select tablename, columnname
from dbc.columns
where databasename = 'mydatabasename'
and columnname like '%findthis%'
order by tablename
上述查询在teradata环境中有效,但在Impala中会抛出错误。
谢谢,
答案 0 :(得分:5)
Impala与Hive共享Metastore。与传统的RDBMS不同,Hive元数据存储在单独的数据库中。在大多数情况下,它是在MySQL或Postgres中。如果您可以访问Metastore数据库,则可以在表TBLS上运行SELECT以获取有关表的详细信息,并使用COLUMNS_V2获取有关列的详细信息。
如果您无权访问Metastore,则唯一的选择是描述每个表以获取列名称。如果你有很多数据库和表,你可以编写一个shell脚本来使用“show tables”来获取表的列表,并使用“desc tablename”在表中循环来描述它们。