暂无图片
用shell遍历目录,执行多个oracle脚本?
我来答
分享
swagger
2022-03-23
用shell遍历目录,执行多个oracle脚本?

for i in $dir/*;do
su - oracle -c "sqlplus ${DB_CONNECTION} @$i"
done

请教:dir目录有好几个sql,这条命令就执行了一条,完了停在sqlplus里,如何让这个for循环执行多个脚本?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
严少安
暂无图片

再嵌套一层,循环*.sql

暂无图片 评论
暂无图片 有用 0
DarkAthena

注意你这里每次循环都会启动一次sqlplus,因此如果你前一次sqlplus没退出,它就会一直卡那。所以你当前代码的基础上,在执行脚本文件之后,应该还要执行一次"exit;"(这里需要使用管道将命令定向到sqlplus窗口),这样才能完成循环里的一次命令。

另外,要实现你执行多个脚本的目标,其实还有其他方法,不需要循环,三行代码就够了,第一行用dir生成一个列表文件,注意文件里每一行前面都要拼个@,并且最后要加一个exit,然后在sqlplus连接数据库@这个列表文件就行了

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏