db2 存储过程迁移方法

    大家在迁移数据库时,存储过程一般也要迁移过去,但一般有两个问题:

1. 很多存储过程有先后关系(存储过程调用存储过程),如果存储过程数量少,还能手动操作,如果量大,那真是要疯了。

2. 存储过程过大(行数过多),导致异常

这边有个方法,或许可以解决这个问题。

一. 导出存储过程

EXPORT TO G:/PROCUDURE/procudure.del OF del MODIFIED BY LOBSINFILE
SELECT 'SET CURRENT SCHEMA '||rtrim(procschema)||'@'||chr(10)||'SET CURRENT PATH = SYSIBM,SYSFUN,SYSPROC,'||rtrim(procschema)||' @'||chr(10)||text||chr(10)||'@'||chr(10)
FROM syscat.procedures WHERE PROCSCHEMA  = 'ILS' ORDER BY create_time ;

执行以上导出语句,则是把schema为ils下面的存储过程导出为文件,因为有ORDER BY create_time,所以导出的顺序也是按照原有存储过程的顺序建立的。

执行完了,应该在G:/PROCUDURE看到两个文件

1. procudure.del

2. procudure.del.001.lob

如图:

会出现procudure.del.001.lob这个文件,因为我这边有存储过程太大(使用MODIFIED BY LOBSINFILE),所以导出为lob文件,这样不容易出错。

二. 导入存储过程

下一步当然是在其他db下面导入存储过程啦:

1. 命令行下进入到G:/PROCUDURE

2. 连接到要导入的db:  connect to ilsdb user xxx用户 using  xxx密码

3. db2 -td@ -vf procudure.del.001.lob

ok,顺便看看log,有没有报错。有报错,在执行一次(虽然是按照创建时间排序的,但不能保证有人后期修改过父存储过程,导致创建时间不对)。

导入过程见图:

打开后输入以下命令

 

 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值