最近因为项目需要,打算写一个批处理程序,更新数据库中的表数据。写了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:\表\b.sql
--@Y:\表\c.sql
@Y:\表\receive28.sql
@Y:\表\receivetcs.sql
@Y:\表\receiveattachment.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

批处理执行多个SQL文件到oracle的更多相关文章

  1. 数据库操作中如何批量执行多个sql文件?

    数据库操作中如何批量执行多个sql文件? 1.应用场景:在历史数据导入过程中,会发现有很多个表形成的.sql文件,要是一个一个文件去手动执行,实在是费时间,所以采取以下方法. 2.将文件放在一定位置, ...

  2. Ubuntu下执行mysql的sql文件

    Ubuntu下执行mysql的.sql文件   方法一: 1.执行此命令,会提示输入mysql的root账户的密码,验证成功后,会在dbname这个数据库中执行filename.sql这个脚本,其中f ...

  3. 执行超大的.sql文件处理,100M++

    sqlcmd的命令参数如下: 1    [-U 登录 ID]             [-P 密码] 2  [-S 服务器]                [-H 主机名]           [-E ...

  4. navicat执行大容量的.sql文件时的设置

    如果有主外键关联等,执行报错,则去掉中间的对勾保留第三个对勾试试.第三个对勾 是 手动提交(不自动提交,估计是全部导入到数据库中之后再一起提交,而不是导入一条sql语句就提交一次) 如果同时不勾选第2 ...

  5. Navicat for MySQL 批量执行多个 SQL 文件

    文件合并 type *.sql >> aaa.sql 执行sql文件 右键点击数据库

  6. sql cmd命令执行sqlserver的sql文件

    有的时候,我们通过Log Explorer工具根据日志生成的回滚脚本,或者其他情况我们得到的脚本文件,通过sqlserver打开脚本文件的方式不爽,我们可以这样: 方式一: osql -S . -U ...

  7. dos命令执行mysql的sql文件

    1.cmd进入dos窗口 2.输入cd+ mysql的bin目录后进入bin文件下 3.进入控制台:mysql -uroot -proot  回车 4.选择数据库:use mydata go 回车 5 ...

  8. shell脚本中怎样同时执行多个.sql文件,并把结果写入文件中(转)

    转载:http://joewalker.iteye.com/blog/408879命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名;导出整个数据 ...

  9. oracle 基础 执行sql文件

    Oracle执行外部文件: c:>sqlplus user/pwd@db sql>@new.sql 执行多个sql文件: 1.把所有的文件都放在同一个目录下,然后在命令行里执行命令:    ...

随机推荐

  1. VM and Docker Container

    https://www.zhihu.com/question/48174633 在开始讨论前,先抛出一些问题,可先别急着查看答案,讨论的过程可以让答案更有趣,问题如下: Docker 容器有自己的ke ...

  2. centos6 没有eth0网络

    编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 ONREBOOT=no #改成yes service network restart 在用 ifconfig ...

  3. 版本控制系统Subversion

    系统提供撤销的功能对我们实际开发中特别重要.改动后撤销几乎也是我们每个人经常做的事情.再多人进行同一个项目的开发或者测试的时候,版本的唯一性(类似于临界区资源),也就是说A 和B 两个人协同工作的时候 ...

  4. Shell编程之循环控制及状态返回值

    1.break.continue.exit.return的对比 break.continue在条件语句和循环语句中用于控制程序走向: exit用于终止所有语句并退出当前脚本,还可以返回上一次程序或命令 ...

  5. 基于SSM的单点登陆01

    使用SSM的Maven聚合项目 建立父项目market的pom文件 <?xml version="1.0" encoding="UTF-8"?> & ...

  6. 以太坊钱包Geth使用命令

    一.启动以太坊钱包Geth 打开一个控制台,执行同步区块命令 #同步测试链geth --fast --cache=512 --rpc --rpcapi personal,db,eth,net,web3 ...

  7. create_workqueue和create_singlethread_workqueue【转】

    本文转载自:http://bgutech.blog.163.com/blog/static/18261124320116181119889/ 1. 什么是workqueueLinux中的Workque ...

  8. 解决MySQL因不能创建 PID 导致无法启动的方法

    问题描述 MySQL 启动报错信息如下: ? 1 2 Starting mysqld (via systemctl):  Job for mysqld.service failed because t ...

  9. 关于 Java正则表达式中的Possessive数量修饰词的理解

    关于 Java正则表达式中的Possessive数量修饰词的理解 正则表达式对于数量限定符如 ?, + , *, {n, m} 的匹配默认是贪婪模式,比如: a.*b   匹配 acbab 的结果是 ...

  10. java 开发面试题小整理(一)

    本篇文档将持续更新,有基础滴,也有深层次的,谢谢! 1.看下面的程序是否有问题,如果有问题,请指出并说明理由. * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 ...