我有多个 HQL,下面是一个示例。
位于 :/home/ganesh/CopyJobs/hql/
insert into XYZ.exttbl_form_data PARTITION (load_date="$proc_date") select FORM_DATA_ID,FORM_ID,USER_ID,INTERACTIONS_ID,SUBMISSION_DATETIME,FILEDS from PQR.exttbl_form_data where load_date="$proc_date"
在主脚本中,我读到上面提到的 HQL 作为
export proc_date=2018-05-07
while read line
do
export hql=`cat /home/ganesh/CopyJobs/hql/$table_name.hql`
export hql_final=$(`eval echo"$hql"`)
echo "Final HQL: $hql_final"
hive -e "$hql_final;"
done < /home/ganesh/CopyJobs/config/tables.txt
tables.txt 中包含所有 HQL 的列表。
我想解决 $proc_date 但没有发生。
答案1
我不确定 $( eval echo"$hql"
) 是一个好的选择。
echo
在和之间添加一个空格"$hql"
- 这里有不少于四个替换,我会使用 3 行。
我会模板hql
文件,例如替换load_date="$proc_date"
为LOAD_DATA_TMPL
然后,在循环内部
hql_final=$(sed s:LOAD_DATA_TMPL:load_date="$proc_date":g /home/ganesh/...)
echo "Final HQL: $hql_final"
hive -e "$hql_final;"
- 确保其中没有空间
$proc_date