sqlplus批处理导入多个脚本到多个数据库

作者:mwj818    时间:2020-01-01  微信:神游九州

    最近几个月才接手,来维护中间件和数据库的升级事宜,可以说是从项目管理到软件修理工吧。手里掌管着一、二十个应用及数据库的运维管理,是个头大的事情。而且总感觉工具不顺手,在为软件应用及数据库升级脚本的时候,维护不到位是个很烦心的事。

    为此,我在网上没有少找度娘来帮忙。可时,有时,并不能什么都能垂手而得。需要根据已有的参考资料来自己思考加工,而获得自己想要的功能。

    这不,我那个调离此项目的同事为项目运维而设计的工具又不干活了,罢工了。为此,我不得不自己到网上搜索用shell下编写脚本来完成既定的任务。

    度娘让我在简书上,找到了【SqlPlus 批量执行sql脚本】https://www.jianshu.com/p/b3bcd836a6b3,但是,那个是对单一数据库进行脚本升级的例子。而我需要的是【多数据库,多脚本,导入的脚本】。怎么样能达到我需要的功能呢?继续努力搜索吧。我想:既然这个例子是for循换来完成一个数据库的多个脚本遍历执行。那么,我或许也可以在此基础上加工一下,来为我所用呐!!!

    我请教其他同事,希望他们能帮我改改。脚本传过去了,没有回复!!!等了良久,没有人能帮忙!!!或许别人会,但不想费那功夫吧。不得而知,那就自力更生,丰衣足食吧。

    for循换,搜索!!!

例子:

图1

(图1)太多了,不合适!再找。


图2

图2这个好像有点意思。结合我的实际情况,我可以把多个数据库的登录串,写到一个文本里。逐行读取显示出来利用?!你想到了吗?如下:

1、username/password@oracle_ip/instance_name

2、username/password@oracle_ip/instance_name

3、username/password@oracle_ip/instance_name

4、username/password@oracle_ip/instance_name

5、username/password@oracle_ip/instance_name

6、username/password@oracle_ip/instance_name

7、username/password@oracle_ip/instance_name

8、username/password@oracle_ip/instance_name

... ...等等好的行。

1、*.sql

2、*.sql

3、*.sql

sql文件放在特定的目录下,比如 /temp下,... ...等等。

把代码变个样吧(图3),或许更好理解一些。


图3

再把数据库串写到一个文件里,命名为sql_file.txt。再试试上面的代码,能不能读出来!?图4.

图4

而我需要的格式,应该是这样的(图5)。

图5

把前两个图3和图4的两个for循换结合一下,看看(图6)。


图6

结果(图7)显示:


图7

正是我所需要的格式。哈哈!!!大功即将告成。

把 sqlplus /nolog,  conn 和 exit 加上,就算告成。

亲,你们看懂了嘛???

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容