如何在Hive中的所有表中找到特定的列名。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Hive中的所有表中找到特定的列名。相关的知识,希望对你有一定的参考价值。

如何在Hive中的所有表中找到特定的列名?

我在hive中运行了这个查询:select table_name,column_name from retail.columns where column_name like '%emp%';(retail是一个数据库)。

但它给了:

错误FAILED:SemanticException第0行:-1未找到表'列'

我试过查询:select distinct table_name from default.columns where column_name = 'emp'(默认是我的数据库)。但它也给出了错误。

我搜索了这些,我得到了我为SQL数据库编写的查询。

但我想在蜂巢数据库中搜索?如何进入蜂巢?

之前已经问过同样的问题,但我觉得事情可能已经改变,可能有直接的解决方案:

How can you search for all tables with a given column name and return which tables have this column name in Hadoop/Hive?

Searching Tables and Columns in Hive

答案

下面的shell脚本会给你想要的结果:

hive -S -e 'show databases'|
while read database
do
   eval "hive -S -e 'show tables in $database'"|
   while read line
   do
if eval "hive -S -e 'describe $database.$line'"| grep -q "<column_name"; then
  output="Required table name: $database.$line"'
';
else
output=""'
';

fi
echo -e "$output"
 done
done
另一答案

这是您可以在Metastore上使用的查询:

选择来自TBLS的TBL_NAME,COLUMN_NAME,TYPE_NAME,在CD_ID = TBL_ID上加入COLUMNS_V2,其中COLUMN_NAME喜欢“列”;

其中'column'是您要查找的列名称。

以上是关于如何在Hive中的所有表中找到特定的列名。的主要内容,如果未能解决你的问题,请参考以下文章

如何在不包含新列名和类型的情况下更改现有 Hive 表中的列注释?

如何从 SQL Server 中特定数据库的表中获取所有列名?

如何跳过 Hive 外部表中的 CSV 标头?

如何更改 hive 中的列名

如何使用 Spark SQL 识别 hive 表中的分区列

如何在 MySQL 中找到所有具有特定列名的表?