我有一个.sql文件,其中有100个hive查询,我希望他们的输出在多个文件中,比如第一个查询abc.txt文件被创建用于第二个查询xyz.txt文件被创建等等。 ... 100个查询100个输出文件及其结果
答案 0 :(得分:0)
如果你的主.sql文件有分号分隔的sql查询,你可以使用这样的awk
命令生成带输出文件的单独的hive命令。
tr '\n' ' ' < yourqueryfile | awk 'BEGIN {RS=";"} \
{gsub(/(^ +| +$)/, "", $0);printf "hive -e \"%s\" >OUT_"NF".txt\n",$0}'
RS=";"
- 将记录分隔符设置为“;”
tr
- 将查询之间的换行替换为单个空格。
gsub
- 修剪前导和尾随空格。
该命令将生成多个这样的hive命令行。
hive -e "select 1" >OUT_2.txt
hive -e "select 3 from ( select 4 )" >OUT_7.txt
hive -e "select name from t union select n from t2" >OUT_9.txt
hive -e "select * from c" >OUT_4.txt