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

  • 相关阅读:
    弹性布局----Flex
    mysql多实例双主部署
    你知道你的类是从什么地方加载来的吗?
    ElasticSearch学习,入门篇(一)
    Spring声明式事物原理分析
    SpringBoot启动流程分析
    Spring Aop 原理分析
    Spring容器的创建原理
    你可能不知道的jvm的类加载机制
    面向工资编程的程序员,后来都过得怎么样。
  • 原文地址:https://www.cnblogs.com/mq0036/p/4724466.html
Copyright © 2011-2022 走看看