使用 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
下面的脚本给我一个错误。基本上,我试图删除从第一个查询中获得的记录。我已经把它们放在一个文本文件中,格式化它们并在删除操作中使用它们。
执行脚本后出现以下错误:- : 第 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