Não foi possível resolver $ proc_date a partir do script

0

Eu tenho vários HQL's, abaixo está o exemplo.

localizado em: / 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" 

No script principal, estou lendo os HQLs mencionados acima como

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 

onde em tables.txt tem uma lista de todos os HQL.

Quero resolver o $ proc_date, no entanto, isso não está acontecendo.

Ganesh
fonte
Onde você está usando seu $linevalor?
Kusalananda
1) na exportação hql = cat /home/ganesh/CopyJobs/hql/$table_name.hql$ table_name.hql em indefinido. 2) cat não substituirá o valor de $ proc_date.
Archemar 10/1018

Respostas:

0

Não tenho certeza se $ ( eval echo"$hql") é uma boa escolha.

  • adicione um espaço entre echoe"$hql"
  • há nada menos que quatro substituições aqui, eu usaria 3 linhas.

Gostaria de hqlarquivo de modelo , por exemplo, substituir load_date="$proc_date"porLOAD_DATA_TMPL

então, dentro do loop

hql_final=$(sed s:LOAD_DATA_TMPL:load_date="$proc_date":g /home/ganesh/...)
echo "Final HQL: $hql_final"
hive -e "$hql_final;"
  • certifique-se de que não há espaço $proc_date
Archemar
fonte