zoukankan      html  css  js  c++  java
  • 批处理执行多个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

  • 相关阅读:
    Markdown示例
    初识Markdown
    Ubuntu源整理
    Vi编辑器入门
    Ubuntu,Linux入门系统
    [其他]volatile 关键字
    Qt5:随窗口大小变化背景图片自动缩放的实现
    Qt5:不规则按钮的实现---通过贴图实现
    windows编程:创建DLL
    [转]Firefox拦截12306订票网站的解决办法
  • 原文地址:https://www.cnblogs.com/mq0036/p/4724466.html
Copyright © 2011-2022 走看看