linux定时执行含有db2存储过程的shell脚本.docxVIP

linux定时执行含有db2存储过程的shell脚本.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LINUX下定时执行含有DB2存储过程的SHELL脚本 最近项目要求将某些表中的数据转移到历史数据表中,并将成功转移后的数据在生产系统中删除,并且要求每天凌晨1:00定时执行脚本。这是我第一次写这样的脚本程序,现将整个编写过程或步骤记录如下,希望能对有类似需求的人所有帮助,由于本人也是刚接触DB2数据库和shell脚本,错误之处还请见谅。测试服务器的操作系统是Redhat,数据库产品:DB2(10.1版本),转移数据是在DB2存储过程中实现的,下面分几个步骤进行叙述。 编写DB2存储过程 1》编写存储过程 具体代码见表格1,将其中的代码形成一个sql文件,文件名为dataHandle.sql CREATE OR REPLACE PROCEDURE test_schema.dataHandle(in t_Id INT)--in表示输入参数 RESULT SETS 1 --返回结果为1个 LANGUAGE SQL P1: BEGIN ATOMIC --ATOMIC为了使P1和END P1之间形成一个事务,要么同时成功,要么同时失败 declare tIdINT; --声明变量 set tId=t_Id; --赋值变量 IF tId 0 THEN --判断 insert into TEST_SCHEMA.TEST_HISTORY(t_Id,t_name) select t_Id,t_name from TEST_SCHEMA.TM_ASM_FLTSCH where where t_Id=tId; --转移数据 delete from TEST_SCHEMA.TM_ASM_FLTSCH where t_Id=tId; --删除数据 END IF; END P1 @ --@这里是必须的 表1 2》部署存储过程到指定数据库 连接数据库 切换到数据库用户下执行命令:db2 connect to Dbname 或者不切换用户执行命令:db2 connect to Dbname user Username using ****** 部署1》中写好的存储过程 执行命令:db2 -td@ -vf dataHandle.sql 或者使用datastudio进行部署,具体流程如下: 最后点击Finish即可。 编写SHELL脚本 该脚本的代码见表2,主要功能是:将表test中90天之前的数据转移到test_history表中,并将表test中已被转移的数据删除掉,并对表test,test_history进行重组,使表中的索引及时生效。脚本文件名为cronTransData.sh,其中获取主键值时,是将符合查询条件的所有主键都输出到文件re.txt中,之后逐行读取该文件中的主键值,并在循环中逐个处理(循环调用存储过程)。 #!/bin/sh #load db2 environment variables . /home/db2inst1/.profile #加载DB2 数据的环境变量 startTime=`date +%s` #获取当前时间戳 #transfer data(90 days before) to history table outDate=`date -d -90day +%Y-%m-%d` #获取当前日期90天之前的日期 db2 connect to Dbname #连接数据库 #fetch the primary key values of transfered data into re.txt file. db2 select t_Id from test_schema.test where to_date=$outDate re.txt; #将90天之前的数据的主键值输出到文件re.txt中 db2 terminate #终止数据库连接,释放链接资源 #read re.txt file to fetch fltschIds value cat re.txt|grep [\s0-9\s]$|while read tId #从上面的输出文件中提取只含数字和空格的行(只读取主键值) do #循环执行 db2 connect to seat #call store procefure to complete data transfer db2 call test_schema.dataHandle($tId) #调用上面部署成功的存储过程 db2 terminate; done runstats on table test_schema.test and index all; #整理一下表 runstats on

文档评论(0)

pengyou2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档