Shell 脚本循环遍历 CSV 文件,运行 oracle 更新查询并检查是否成功完成

Shell 脚本循环遍历 CSV 文件,运行 oracle 更新查询并检查是否成功完成

我是 shell 脚本的新手。我想循环遍历记录并运行更新查询。我尝试了下面的代码,但它给出了错误。

下面$data的值是

14/06/2021(输入日期),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不会解释shell命令。你可以尝试这样的事情:

>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

相关内容