스크립트에서 $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"
  • 여기에는 대체 항목이 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

관련 정보