无法从脚本解析 $proc_date

无法从脚本解析 $proc_date

我有多个 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

相关内容