SPOOL时间的SQL脚本:
spool time.txt
select sysdate from dual; ----获取系统时间
spool off exit
文件命名为time.sql,保存在D盘根目录下。
BAT文件:
命名为test.bat sqlplus LIFE/LIFE_PWD@o122g4 @d:time.sql
执行完成后,产生一个time.txt文件:
SYSDATE
--------------
24-12月-09
Usage: SPOOL { <file> | OFF | OUT }
where <file> is file_name[.ext] [CRE[ATE]|REP[LACE]|APP[END]]
SQL> exit
那么执行多个sql脚本该怎么处理呢?下面做个实例:我们需要删除多个表,首先判断表是否存在,不存在的话直接create,否则drop table,这里有三个任务(CREATECONTRACTMASTER.SQL/CREATECONTRACTPRODUCT.SQL/CREATEGROUPPRODUCT.SQL);
一 准备SQL脚本:
1.CREATECONTRACTMASTER.SQL:
SPOOL CONTRACTMST.LOG
DECLARE
M_COUNT NUMBER;
IF EXISTS(SELECT COUNT(1) INTO M_COUNT FROM ALL_ALL_TABLES WHERE TABLE_NAME = UPPER('T_CONTRACT_MASTER')) THEN
DROP TABLE T_CONTRACT_MASTER;
ELSE
CREATE TABLE T_CONTRACT_MASTER(
POL_ID NUMBER(10),
POL_CODE VARCHAR2(20),
CREATE_USER VARCHAR2(10),
CREATE_DATE DATE,
UPDATE_USER VARCHAR2(10),
UPDATE_TIME DATE
);
END IF;
SPOOL OFF
EXIT;
2.CREATECONTRACTPRODUCT.SQL:
SPOOL CONTRACTPROD.LOG
DECLARE
M_COUNT NUMBER;
IF EXISTS(SELECT COUNT(1) INTO M_COUNT FROM ALL_ALL_TABLES WHERE TABLE_NAME = UPPER('T_CONTRACT_PRODUCT')) THEN
DROP TABLE T_CONTRACT_PRODUCT;
ELSE
CREATE TABLE T_CONTRACT_PRODUCT(
PRD_ID NUMBER(10),
PRD_NAME VARCHAR2(20),
POL_ID NUMBER(10),
CREATE_USER VARCHAR2(10),
CREATE_DATE DATE,
UPDATE_USER VARCHAR2(10),
UPDATE_TIME DATE
);
END IF;
SPOOL OFF
EXIT;
3.CREATEGROUPPRODUCT.SQL:
SPOOL GROUPPRD.LOG
DECLARE
M_COUNT NUMBER;
IF EXISTS(SELECT COUNT(1) INTO M_COUNT FROM ALL_ALL_TABLES WHERE TABLE_NAME = UPPER('T_GROUP_PRODUCT')) THEN
DROP TABLE T_GROUP_PRODUCT;
ELSE
CREATE TABLE T_GROUP_PRODUCT(
PRD_ID NUMBER(10),
POL_ID NUMBER(10),
CREATE_USER VARCHAR2(10),
CREATE_DATE DATE,
UPDATE_USER VARCHAR2(10),
UPDATE_TIME DATE
);
END IF;
SPOOL OFF
EXIT;
二 编写批处理命令文件(EXECSQL.BAT):批处理命令文件与SQL脚本最好放置在同一目录下,这样,可以设置成相对路径。否则,用绝对路径在执行时可能比较麻烦。
EXECSAL.BAT:
SQLPLUS LIFE/LIFE_PWD@o122g4;
@CREATECONTRACTMASTER.SQL
@CREATECONTRACTPRODUCT.SQL
@CREATEGROUPPRODUCT.SQL
EXIT;
当然,通常会把所有的脚本重新用一个sql脚本组合起来,然后用批处理命令调用这个SQL脚本即可。
注意:如果是需要传递值,直接将参数放到SPOOL的脚本中。
SET TERMOUT OFF ----显示脚本中的命令的执行结果,缺省为on
SET NEWPAGE 1
SET SPACE 0
SET PAGESIZE 0 --输出每页行数,缺省为24,为了避免分页,可设定为0。
SET ECHO OFF ---显示start启动的脚本中的每个sql命令,缺省为on
SET FEEDBACK OFF --回显本次sql命令处理的记录条数,缺省为on
SET VERIFY OFF --设置是否显示替代变量被替代前后的语句
SET HEADING OFF ---输出域标题,缺省为on
SET MARKUP HTML OFF ---html 元素标签开关 打开
SPOOL OFF
SET TRIMSPOOL ON ---去除重定向(spool)输出每行的拖尾空格,缺省为off
SET TRIMOUT ON ---去除标准输出每行的拖尾空格,缺省为off
-- spool 到当前目录中
spool output.tmp
spool off
-- 构造查询语句
@@output.tmp
set colsep' ' ---域输出分隔符
当然,还有一种方法,就是用VBA产生脚本。以下脚本没有验证过!
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")'创建脚本对象
Set oExec = WshShell.Exec("sqlplus -S LIFE/LIFE@O122G4 @D:\a.sql")'-s是不回显,然后跟用户名和密码,之后是sql语句路径
Set oExec = WshShell.Exec("sqlplus -S scott/tiger @D:\b.sql")
分享到:
相关推荐
本话题将详细探讨如何在Oracle存储过程中调用外部的批处理脚本,如Windows系统的BAT文件,以实现数据库操作与系统命令的集成。 首先,`Oracle存储过程`是一种预编译的SQL和PL/SQL代码集合,可以被多次调用以执行...
在实际应用中,为了增加可读性和维护性,通常会将SQL语句写入单独的脚本文件(如`.sql`文件),然后在批处理文件中调用它们,例如: ```cmd @echo off sqlplus system/manager@localhost:1521/orcl @sql_script.sql...
接着,它调用Oracle的导出工具`exp`,使用指定的用户名、密码和SID连接到数据库,并指定要备份的用户(表)和输出文件名。 ### 三、使用Rar进行压缩 备份完成后,为了节省存储空间和便于管理,可以使用Rar工具对...
这个批处理脚本首先设置了Oracle的环境变量,然后调用`expdp`命令进行导出。`dumpfile`指定了导出的DMP文件名,而`logfile`则是导出过程的日志文件。最后,`pause`命令会暂停脚本执行,显示“按任意键继续…”的提示...
在Windows上,我们需要创建一个批处理文件(.bat文件)来执行调用Oracle存储过程的命令。这通常涉及到使用SQL*Plus或者ODBC连接到Oracle数据库,执行`EXEC`语句来运行存储过程。例如,一个简单的批处理文件可能包含...
5. **卸载Oracle相关组件**:如果Oracle是通过Windows“控制面板”安装的,批处理可能使用`MsiExec.exe /X {产品代码}`命令卸载Oracle产品,其中"{产品代码}"是Oracle的特定产品标识。 6. **删除临时和日志文件**:...
- 可以使用Windows的 `at` 命令或计划任务服务设置定时执行这些批处理脚本,例如每天的特定时间。 7. **日志管理**: - 批处理脚本还会创建日志文件,记录备份过程中的详细信息,以便于问题排查和审计。 8. **...
3. **编写批处理脚本**:创建一个`.bat`文件,比如`install_oracle.bat`,在其中调用Oracle的安装程序并传递响应文件。例如: ```batch @echo off set ORACLE_HOME=C:\Oracle\product\10.2.0\db_1 set ORACLE_...
除了手动编写批处理脚本外,还可以使用PL/SQL Developer、Toad等第三方数据库管理工具,这些工具通常内置了批处理功能,可以更直观地管理和执行多条SQL脚本。例如,在PL/SQL Developer中,你可以创建一个新的...
标题中的“pb中执行oracle存储过程脚本”指的是在PowerBuilder(简称PB)环境中调用Oracle数据库的存储过程。PowerBuilder是一种可视化的开发工具,常用于构建数据驱动的应用程序。Oracle存储过程则是在Oracle数据库...
下面将深入探讨Oracle数据库服务的启动和停止以及批处理脚本的使用。 1. **Oracle数据库服务启动与停止**: - **启动服务**:Oracle数据库服务可以通过“Services”管理工具手动启动,或者使用命令行工具“sqlplus...
通过以上步骤,我们便能在C#中使用Oracle自带驱动实现批处理,高效地执行多条SQL语句。这种方法不仅提高了性能,还能减少网络通信次数,对大型数据库操作尤其有益。 最后,压缩包中的"WindowsApplication13.sln"和...
### Oracle自动导出脚本...通过以上详细说明,我们可以了解到如何在Windows环境下使用批处理脚本实现Oracle数据库的自动导出,并且生成的备份文件名包含了当前日期和时间信息,有助于后续的数据管理和恢复工作。
1. **SQL*Plus批处理**:SQL*Plus是Oracle提供的一个命令行工具,用户可以直接在其中编写和执行SQL脚本。通过`@filename.sql`的方式,可以运行包含多个SQL语句的文本文件,实现批处理。 2. **PL/SQL块**:PL/SQL是...
除了RMAN,批处理文件可能还会调用Oracle的Data Pump工具(expdp/impdp)进行逻辑备份。Data Pump提供了高效的数据导入导出功能,允许用户选择特定的表、用户或整个数据库进行备份。例如,以下批处理文件会导出一个...
在Windows环境下,`.bat`文件是一种命令行脚本,可以通过系统命令调用Oracle数据库的相关工具,如`sqlplus`或`oradim`,来执行启动和停止数据库的操作。 1. **启动Oracle服务**: - 使用`oradim`: Oracle Database...
本文将详细介绍如何利用Oracle中的`exp`和`expdp`命令配合Windows批处理脚本以及计划任务来实现Oracle数据库的自动化备份。 #### 备份方法概述 在Oracle数据库中,可以通过两种主要方式来进行数据备份:使用`exp`...
批处理脚本是Windows操作系统中的一种命令文件,可以包含一系列的DOS命令,用于自动化执行特定的任务。在Oracle数据库环境中,我们可以利用Oracle的数据泵工具(expdp和impdp)来创建和恢复数据库备份。expdp是导出...
`backup.txt`文件可能是一个shell脚本,调用Oracle的`exp`或`expdp`命令。与Windows相同,这个脚本也会包含登录信息、参数设置以及目标对象等。在AIX环境下,需要注意的是,文件路径和权限的设定可能与Windows有所...
本知识点将重点讨论如何使用批处理脚本(BAT)来解决这个问题,特别是在Excel中打开UTF-8编码的CSV文件时遇到的中文乱码问题。 标题中的"bat脚本将csv格式UTF-8批量转ANSI"指的是利用批处理脚本来自动化转换一批UTF...