使用db2命令行工具批量执行SQL脚本:在db2命令窗口输入db2 -tvf script.sql -l logfile.txt,即可批量执行脚本文件,并记录日志。
方法一:命令行批量执行
打开DB2命令行执行器,切换到脚本所在目录,使用db2 -tvf your_script.sql命令。-t表示用分号分隔语句,-v显示执行过程,-f指定文件。适合简单批量任务。
自动化调度
在Windows下,用Windows任务计划程序调度db2 -tvf script.sql。在Linux用crontab -e添加0 2 * * * /path/to/db2 -tvf /path/to/script.sql > /log/output.log 2>&1,实现定时自动化执行。
脚本内容示例
-- 批量创建表 CREATE TABLE test1 (id INT); CREATE TABLE test2 (name VARCHAR(50)); -- 插入数据 INSERT INTO test1 VALUES (1); COMMIT; 这个脚本保存为batch.sql,用db2 -tvf batch.sql执行。
错误处理技巧
在脚本中加入WHENEVER SQLERROR CONTINUE;继续执行后续语句,或EXIT;停止。加上-ECHO ALL;显示每条SQL。日志用-l logfile捕获输出,便于调试。
高级自动化:使用CLPPlus
DB2 11.1后支持CLPPlus,类似SQL*Plus。clpplus user/pass@db -f script.sql,支持变量@var=value,循环等,适合复杂自动化。
数据库备份自动化脚本
BACKUP DATABASE sample TO /backup/directory; EXPORT TO /data/del.dat OF DEL SELECT * FROM table; 这个脚本每天运行,实现数据自动化备份和导出。
FAQ
Q: 如何终止批量执行?
A: Ctrl+C中断,或脚本中加EXIT。
Q: 脚本执行失败怎么查?
A: 用-l logfile记录日志,查看错误码。
Q: 支持远程数据库吗?
A: 是,先db2 connect to dbname,然后执行。
Q: 怎么处理大脚本性能?
A: 分拆脚本,增加COMMIT频率。