Sql 用于查找包含特定列的表名的配置单元查询

Sql 用于查找包含特定列的表名的配置单元查询,sql,sql-server,hive,hue,Sql,Sql Server,Hive,Hue,我在SQLServer中编写了以下查询以查看表名和列名 select * from information_schema.COLUMNS where column_name like '%name%' 是否有任何类似的查询可以在配置单元中编写,以获得类似的结果? 如果没有,那么如何在包含特定列的特定数据库中找到表列表?我认为Hive中没有任何可用的选项。您可以使用shell脚本来获得相同的输出。大概是这样的: output="" hive -S -e 'show databases' | wh

我在SQLServer中编写了以下查询以查看表名和列名

select * from information_schema.COLUMNS where column_name like '%name%'
是否有任何类似的查询可以在配置单元中编写,以获得类似的结果?
如果没有,那么如何在包含特定列的特定数据库中找到表列表?

我认为Hive中没有任何可用的选项。您可以使用shell脚本来获得相同的输出。大概是这样的:

output=""
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
          eval "hive -S -e 'show columns in $database.$line'" | while read column
          do
             output="$output$database.$line,$column"'\n'
          done
     fi
   done
done
echo -e "$output"
output=“”
hive-S-e“显示数据库”|同时读取数据库
做
在读取行时评估“hive-S-e‘在$database中显示表’”
做

if eval“hive-S-e”description$database.$line“| grep-q”感谢@Naveen.我尝试了下面的代码……hive-S-e“show databases”|而read database do eval“hive-S-e”show tables in$database“|而read line do if eval“hive-S-e”description$database.$line“| grep-q”name”则输出=”必需的表名:$database.$line“'\n';else output=“”\n';fi echo-e“$output”done……。但问题是它正在逐个(在循环中)给出结果我需要一个完整的表列表。我还希望列的确切名称与列名一起打印,那么我如何才能得到它?对于表列表:您可以为每个循环附加输出变量,然后在退出循环后(读取数据库时)将其打印或写入文件。是否要打印每个表的所有列的列表(其中列名匹配)或仅搜索指定的列名?我需要列名部分匹配的每个表的所有列。我已更新了答案。您可以使用“在表中显示列。\u name”。