DB2批量执行SQL脚本的实现
(2010-12-22 01:34:34)
标签:
杂谈 |
分类: DB2 |
使用过的命令:
进入db2cmd
db2 connect to db_alias user username using password
db2 -tvf c:\abc.sql -l abc.log
参考如下:
可以在命令编辑器或者Windows 的DB2 命令窗口或者 Linux 的shell 中执行SQL 脚本。在windows 的DB2
命令窗口或者 linux 的shell
中执行SQL语句,可以使用下面的命令执行script1.sql脚本:
或者:
在上面的命令中,
-t
表示语句使用默认的语句终结符——分号;
-v 表示使用冗长模式,这样 DB2 会显示每一条正在执行命令的信息;
-f 表示其后就是脚本文件;
-z
表示其后的信息记录文件用于记录屏幕的输出,方便以后的分析(这是可选的,但我们建议使用该选项)。
当使用了-t选项而没有标明语句终结符,则分号(;)会默认为语句的终结符。有时可能会出现使用另外的终结符的情况,例如用SQL
PL 编写的的脚本使用其它的符号而不是默认的分号,因为分号在SQL PL 是用于定义数据库对象过程中的语句结束。
下面为您介绍的是DB2批量执行SQL脚本的实现方法,如果您在DB2批量执行方面遇到过类似的问题的话,不妨一看,相信对您学习DB2批量执行方面会有所帮助。
环境:
Windows系统
DB2客户端或者服务端
一、准备工作
运行db2cmd或者db2cw打开DB2命令行处理器
进入SQL脚本存放目录
用db2 connect to <dbname> user <username> using <password> 命令连接数据库
用db2 set current schema <schema_name> 设置当前的SCHEMA,这个SCHEMA可以是未创建的,DB2会自动创建。
二、执行不同类型的SQL
1、在命令行执行简单SQL命令
db2 <SQL语句内容>
2、在命令行执行SQL脚本文件
db2 -td; -cf <SQL脚本文件路径> -l <输出日志文件路径>
说明:-td; 指定语句结束标志。因为一般SQL都是以分号结尾,所以就写成“-td;”。
-l <输出日志文件路径> 是可选的。
3、在命令行执行DB2 存储过程文件
db2 -td@ -f <SQL过程文件路径> -l <输出日志文件路径>
说明:-td; 指定语句结束标志。因为一般SQL过程都是以@结尾,所以就写成“-td@”。
-l <输出日志文件路径> 是可选的。
三、写批处理脚本
批处理脚本无非就是把命令写在一起,保存为bat文件,执行即可。
在写批处理之前,先回顾一下DB2命令选项:
C:"IBM"SQLLIB"BIN>db2 ? options
db2 [option ...] [db2-command | sql-statement |
[? [phrase | message | sqlstate | class-code]]]
option:-a、-c、-d、-e{c|s}、-finfile、-i、-lhistfile、-m、-n、-o、
-p、-q、-rreport、-s、-t、-td;、-v、-w、-x 和 -zoutputfile。
选项
------ ---------------------------------------- ---------------
-a
-c
-d
-e
-f
-i
-l
-m
-n
-o
-p
-q
-r
-s
-t
-v
-w
-x
-z
注意:
使用 DB2OPTIONS 环境变量定制选项缺省值。
紧跟选项字母后的减号(-)使该选项关闭。
使用 UPDATE COMMAND OPTIONS 更改选项设置(以交互式或
文件输入方式)。
根据命令参数创建批处理文件xxx.bat:
rem
db2 connect to <dbname> user <username> using <password>
rem
db2 set current schema <schema_name>
rem
db2 -td; -cf <SQL脚本文件路径> -l <输出日志文件路径>
rem
db2 -td@ -f <SQL过程文件路径> -l <输出日志文件路径>
注意:<SQL过程文件路径>可以是绝对路径也可以是相对路径。
四、执行批处理
运行db2cmd或者db2cw打开DB2命令行处理器。
如果<SQL过程文件路径>和<SQL脚本文件路径>为绝对路径,则可以直接命令行执行 xxx
如果<SQL过程文件路径>和<SQL脚本文件路径>为相对路径,则需要进入适当的目录,一边能在此目录下找到批处理,然后执行 xxx
AIX:
db2 -tvf 文件名.sql

加载中…