使用 shell 脚本从数据库中删除行

delete rows from databse using a shell script

下面的脚本给我一个错误。基本上,我试图删除从第一个查询中获得的记录。我已经把它们放在一个文本文件中,格式化它们并在删除操作中使用它们。

执行脚本后出现以下错误:- : 第 5 行:第 27 行的语法错误:`<<' 不匹配

无法判断,因为您转储的代码未格式化,但我的第一个猜测是您在 here document 中的 EOF 前面有前导空格。

这应该有效(注意 EOF 前面没有前导空格。:

sqlplus -s $dbcreds << EOF > output.txt
  SET SERVEROUTPUT OFF
    select empname from emp where dept_no=123;
EOF


if [ -s "output.txt" ]
then
  echo " Found the below employees....Deleting them from Database ..............!!!! \n"
  cat output.txt
  sed "s/(.*)/''/" output.txt| tr '\n' ','|sed 's/.$//' >final_employees.txt

  while read line
  do
     sqlplus -s $dbcreds <<EOF
       SET SERVEROUTPUT OFF
       Delete from emp where empname in ($line);
EOF
  done  < final_employees.txt

else

  echo " No employees found....!!!"
fi