![쉘 스크립트는 CSV 파일을 반복하고 oracle 업데이트 쿼리를 실행하며 성공적으로 완료되었는지 확인합니다.](https://linux55.com/image/192591/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94%20CSV%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B0%98%EB%B3%B5%ED%95%98%EA%B3%A0%20oracle%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%20%EC%BF%BC%EB%A6%AC%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EB%A9%B0%20%EC%84%B1%EA%B3%B5%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%99%84%EB%A3%8C%EB%90%98%EC%97%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%A9%EB%8B%88%EB%8B%A4..png)
저는 쉘 스크립팅을 처음 접했습니다. 레코드를 반복하여 업데이트 쿼리를 실행하고 싶습니다. 아래 코드를 시도했지만 오류가 발생합니다.
아래 $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