シェルスクリプトは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

関連情報