쉘 스크립트는 CSV 파일을 반복하고 oracle 업데이트 쿼리를 실행하며 성공적으로 완료되었는지 확인합니다.

쉘 스크립트는 CSV 파일을 반복하고 oracle 업데이트 쿼리를 실행하며 성공적으로 완료되었는지 확인합니다.

저는 쉘 스크립팅을 처음 접했습니다. 레코드를 반복하여 업데이트 쿼리를 실행하고 싶습니다. 아래 코드를 시도했지만 오류가 발생합니다.

아래 $data의 값은 다음과 같습니다.

2021-06-14 (날짜 입력), 30914 (번호 입력)

$ORACLE_HOME/bin/sqlplus -s $UP <<EOF
for data in `cat Store_Days_To_Open_$exeDate.csv | sort --unique `
do
     business_date=`echo $data | cut -d \, -f 1`;
echo $business_date
     store=`echo $data | cut -d \, -f 2`;
echo $store
UPDATE sa_store_day SET store_status= 'W' , data_status = 'P', audit_status='R' WHERE store= $store and business_date= $business_date;
done
commit;
exit
EOF

답변1

Shell 명령과 SQL 명령을 혼합할 수 없습니다. 적어도 sqlplus쉘 명령을 해석하지는 않습니다. 다음과 같이 시도해 볼 수 있습니다.

>outfile
for data in `sort --unique Store_Days_To_Open_${exeDate}.csv`
do
     business_date=`echo $data | cut -d \, -f 1`;
echo $business_date
     store=`echo $data | cut -d \, -f 2`;
echo $store
echo "UPDATE sa_store_day SET store_status= 'W' , data_status = 'P', audit_status='R' WHERE store= $store and business_date= $business_date;" >>outfile
done
echo exit | $ORACLE_HOME/bin/sqlplus -s $UP @outfile

관련 정보