여러 개의 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