• 批处理执行多个SQL文件到oracle


    最近因为项目需要,打算写一个批处理程序,更新数据库中的表数据。写了3个sql文件:a.sql,b.sql,c.sql,在这三个文件中,实现了创建表,并向表中插入数据的操作。
    目前我通过SQLPLUS可以执行一个SQL文件,例如:
    sqlplus test/test@test @a.sql

    如何在一个批处理文件中,按顺序执行三个sql文件。
    我新建了一个a.bat文件,在文件中填写
    sqlplus test/test@test @a.sql
    @b.sql
    @c.sql
    执行文件a.bat,只是执行文件a.sql,执行完文件a.sql,不继续执行后边的文件,如何才能顺序执行批处理中的多个sql文件中的语句呢。

    于是到网上找找,我能遇到的问题,别人应该也有遇到的,所以就查到了如下:

    解决方案:

    在Windown环境中:

    首先把所有的sql文件准备好,具体每个文件里面的内容这里就不列出来了。

    再准备一个全部执行的sql文件,我暂时叫它All.sql,内容如下:

    --@Y:表a.sql
    --@Y:表.sql
    --@Y:表c.sql
    @Y:表
    eceive28.sql
    @Y:表
    eceivetcs.sql
    @Y:表
    eceiveattachment.sql
    @Y:表ContainerLists.sql
    @Y:表DocumentAttachedInformationList.sql
    @Y:表edocrealation.sql
    @Y:表EntryContainerInformationList.sql
    @Y:表EntryIdentityInformationList.sql
    @Y:表EportLocationInformationList.sql
    @Y:表GoodsInformationList.sql
    @Y:表LogisticsLocationInformationLis.sql
    @Y:表main.sql
    exit

    语法和平时sql语法相同,可以用“--”注释某些不用的表,最后的exit表示顺序执行完成后则推出sqlplus环境。

    然后再写一个a.bat文件,内容很简单,如下:

    ::sqlplus system/oracle@xe @all.sql>log.txt
    sqlplus system/oracle@xe @all.sql

    里面写了两行,第一行可用于执行过程中的信息保存到log.txt文件中,如果不需要保存日志信息,则可以使用第二行的代码

    在Linux环境中:

    可以把bat文件写成下面这样就行了

    sqlplus -S /nolog <<EOF
        conn test/test@test
        @a.sql
        @b.sql
        @c.sql
    EOF

    本人只在Windows环境中测试可以使用,Linux暂无环境,请自行测试。

    参考出处:http://bbs.csdn.net/topics/390288596

  • 相关阅读:
    (11)选择排序之二 树形选择排序
    (13)归并排序之一 2路归并排序递归形式
    (15)内部排序C++源码
    (10)选择排序之一 简单选择排序
    (14)归并排序之二 2路归并排序非递归形式
    (12)选择排序之三 堆排序
    Linux常用命令日常积累
    构建工具更新记录
    用javascript读取xml,并进行修改xml数据,解决保存没有权限问题
    免费的午餐(编程利用GoogleAPI发短信)移动联通都支持
  • 原文地址:https://www.cnblogs.com/mq0036/p/4724466.html
Copyright © 2020-2023  润新知