Shell中引用HIVE查询结果作为变量
背景
在开发中需要实现一个功能,动态获取HIVE中表A的数据,以表A中的数据作为创建MySQL表的字段。
实现思路
- HQL拼接两列,一列用自定义字段作为标志,一列为需求的字段
- 将hive查询结果以csv方式输出
- 使用grep -w 字符串精确匹配自定义的标志字段
- 使用awk -F 指定分隔符 及需要提取的字段
#!bin/bash
dataStr= `beeline -outputformat=csv2 -e "select '查询结果' result , student_id from school.student" | grep -w '查询结果' | awl -F '{print $2}'`
后续操作
得出的结果如果是多个,再shell 中变量形式以空格分开。呈现方式如"A001 B002 A003 B004"
#!bin/bash
dataStr= `beeline -outputformat=csv2 -e "select '查询结果' result , student_id from school.student" | grep -w '查询结果' | awl -F '{print $2}'`
#对变量中的数据加个后缀 进行拼接指定字符串 suffix
for x in $dataStr
do
modifiedStr += $x'suffix '
#前面加前缀 suffix后面注意要加空格 方便继续对变量进行处理
done
# 对以A,B不同开头的变量进行分类
for x in $modified
do
if [[ $x == A*]];then
a_student+=$x','
elfi [[ $x == B*]];then
b_student+=$x','
done
# 对分类后的数据进行其他操作
echo $a_student
echo $b_student