用于筛选和提取Hive表名的脚本

问题描述:

我正在尝试编写一个覆盖配置单元服务器中所有数据库的脚本,并为每个数据库返回包含具有某个名称的列的表的列表。具体地(在伪代码中):用于筛选和提取Hive表名的脚本

list l 
for d in show databases: 
    use d 
    for tbl in show tables: 
    res = describe tbl | grep col_name 
    if res not empty: 
     l.append(tbl.name) 
return l 

我不确定如何编码。任何帮助?如果将这些shell命令与管道等结合起来有一些很好的参考,我会很感激这个建议。

+0

您是否确定要执行SQL在BASH中查询? [Perl](https://dbi.perl.org/),有人吗? – hidefromkgb

+0

根本不确定。这是新的。无论会满足这些需求。 – user181218

一种选择是使用hive -e '<hive command>'(不管您选择的脚本语言的):

hive -e 'show databases'将返回所有数据库

hive -e 'use $d; show tables'将返回所有表中的数据库$d

hive -e 'use $d; describe $tbl'将描述表$tbl在数据库中$d

+0

配置单元-e就是我所缺少的。其余的只是脚本。谢谢!! – user181218

+0

@ user181218请注意,每个调用都在新的上下文中 - 使用数据库必须位于任何特定于数据库的命令之前。 –