如何从hql文件中找到当前执行行

yhuiod9q  于 2022-10-21  发布在  Hive
关注(0)|答案(1)|浏览(202)

我有一个sample.hql文件,其中包含以下几行。

desc db.table1;
desc db.table2;
desc db.table3;

我正在尝试从外壳命令运行它,我想找出表中是否存在特定的列,例如-如果表1中存在col1,则输出应显示col1_1在db.able1中找到
我不知道怎么找到它。我正在执行下面的命令

hive -f sample.hql | grep -q "<column_name>"

但我不确定如何从每个执行行中获取数据库和表名。

3ks5zfa0

3ks5zfa01#

您可以让grep在-B之前和-A之后显示。下面的命令将向您显示之前的10行。这可能会让这项工作又快又脏地完成。

hive -f sample.hql | grep -B 10 -q "<column_name>"

如果您想更小心一点,可以尝试使用for循环,该循环一次为行提供一个配置单元。如果它找到该列,它将回显它在其中找到该列的表。(‘&&’仅在前一个命令成功时才执行代码)


# !/bin/bash

for i in $(cat sample.hql); do

    hive -e "$i" | grep -q "<column_name>" && echo $i; 
done

相关问题