複数の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"
- ここには代替項目が4つ以上あるので、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