1

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

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

我正在尝试从 shell 命令运行它我想知道表中是否存在特定列例如,如果 col_1 存在于 table1 中,输出应该说col1_1 在 db.table1 中找到

我不确定如何找到它。我正在执行以下命令

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

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

4

1 回答 1

0

你可以让 grep 显示你之前-B和之后-A。下面的命令会显示你之前的 10 行。这可能会使工作快速而肮脏地完成。

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

如果你想更小心一点,你可以尝试一个 for 循环,而不是一次将行提供给 hive 一个。如果找到该列,它将回显在其中找到该列的表。(“&&”仅在上一个命令成功时才执行代码)

#!/bin/bash

for i in $(cat sample.hql); do
    
    hive -e "$i" | grep -q "<column_name>" && echo $i; 
done
于 2021-12-10T15:30:34.727 回答