用于筛选和提取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命令与管道等结合起来有一些很好的参考,我会很感激这个建议。
一种选择是使用hive -e '<hive command>'
(不管您选择的脚本语言的):
hive -e 'show databases'
将返回所有数据库
hive -e 'use $d; show tables'
将返回所有表中的数据库$d
hive -e 'use $d; describe $tbl'
将描述表$tbl
在数据库中$d
配置单元-e就是我所缺少的。其余的只是脚本。谢谢!! – user181218
@ user181218请注意,每个调用都在新的上下文中 - 使用数据库必须位于任何特定于数据库的命令之前。 –
您是否确定要执行SQL在BASH中查询? [Perl](https://dbi.perl.org/),有人吗? – hidefromkgb
根本不确定。这是新的。无论会满足这些需求。 – user181218