查看: 11139|回复: 17

[精华] 急!db2look导出存储过程??

[复制链接]
论坛徽章:
2
授权会员
日期:2006-01-08 13:31:46ITPUB元老
日期:2006-01-08 13:31:06
跳转到指定楼层
1#
发表于 2006-9-21 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有谁知道怎么用db2look只导出存储过程吗?
论坛徽章:
233
天枰座
日期:2016-02-02 09:36:332012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-06-22 19:28:30现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-04-08 16:56:552011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
2#
发表于 2006-9-21 16:30 | 只看该作者
导出后编辑吧

使用道具 举报

回复
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010广州亚运会纪念徽章:橄榄球
日期:2011-05-22 10:54:33管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010年世界杯参赛球队:丹麦
日期:2010-04-06 10:23:36
3#
发表于 2006-9-22 07:25 | 只看该作者
1)
从 DB2 的目录表 SYSCAT.ROUTINES 中选取:
在 SYSCAT.ROUTINES 系统目录表中,有一个名为 TEXT 的字段,其数据类型定义为 CLOB,长度为 2M(2097152 个字节),用于存放存储过程的创建语句。为得到全部存储过程的定义,可使用类似如下 SELECT 语句,并将定义输出到一个文件中。
DB2 SELECT CHAR(ROUTINESCHEMA,20), CHAR(ROUTINENAME,20), TEXT FROM SYSCAT.ROUTINES > <输出文件名>
2)
对于 v8.2 之后的 DB2,DB2LOOK 命令的 -e 选项中增加了对存储过程的创建语句的提取,用户通过执行:
db2look -d <数据库名> -e -o <输出文件名>
在命输出文件中找到“存储过程的 DDL 语句”段,从而获得创建所有存储过程的语句。
3)
通过 GET ROUTINE 命令来完成:

由于 GET ROUTINE 只能在已知存储过程名称后,对单个存储过程进行,因此需要分成两个步骤来完成:
1)获取所有存储过程的名称:
DB2 SELECT CHAR(ROUTINESCHEMA,20) AS SCHEMA, CHAR(ROUTINENAME,20) AS NAME FROM SYSCAT.ROUTINES WHERE SUBSTR(VARCHAR(TEXT),1,16) = 'CREATE PROCEDURE' > <输出文件名>
2. 根据输出文件中存储过程的名称,分别对每个存储过程执行如下操作,以便将完整的创建语句输出到指定文件中:
DB2 GET ROUTINE INTO <输出文件名> FROM PROCEDURE <存储过程模式名>.<存储过程名>

使用道具 举报

回复
论坛徽章:
233
天枰座
日期:2016-02-02 09:36:332012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-06-22 19:28:30现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-04-08 16:56:552011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
4#
发表于 2006-9-22 09:44 | 只看该作者
北风兄写的真详细阿

使用道具 举报

回复
论坛徽章:
3
会员2007贡献徽章
日期:2007-09-26 18:42:10授权会员
日期:2007-10-23 20:58:17优秀写手
日期:2014-03-01 06:00:03
5#
发表于 2006-9-22 11:08 | 只看该作者
我觉得一条命令就够了

db2look -d <dbname> -td @ -e | sed -n '/^CREATE PROCEDURE/,/^@$/{p;}'

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2006-01-08 13:31:46ITPUB元老
日期:2006-01-08 13:31:06
6#
 楼主| 发表于 2006-9-22 15:38 | 只看该作者
谢谢,楼上各位朋友的指点!非常感谢!

使用道具 举报

回复
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010广州亚运会纪念徽章:橄榄球
日期:2011-05-22 10:54:33管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010年世界杯参赛球队:丹麦
日期:2010-04-06 10:23:36
7#
发表于 2006-9-22 18:05 | 只看该作者
3个办法啊

使用道具 举报

回复
论坛徽章:
54
秀才
日期:2017-02-22 15:18:002015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-03-04 14:48:16马上有对象
日期:2014-10-24 17:37:552014年世界杯参赛球队: 比利时
日期:2014-08-05 11:35:382014年世界杯参赛球队: 阿根廷
日期:2014-07-15 10:49:33马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11路虎
日期:2014-01-02 12:55:56ITPUB社区12周年站庆徽章
日期:2013-10-08 15:00:34
8#
发表于 2006-10-12 22:21 | 只看该作者

Delphi+Oracle

如此搭配玩的人比較少喔,偶現在正入手中。。

使用道具 举报

回复
论坛徽章:
124
生肖徽章:马
日期:2007-09-26 12:36:24生肖徽章:马
日期:2007-09-26 17:03:45生肖徽章:马
日期:2007-09-26 17:03:35生肖徽章:马
日期:2007-09-26 17:02:38生肖徽章:马
日期:2007-09-26 17:02:07生肖徽章:马
日期:2007-09-26 17:02:01生肖徽章:马
日期:2007-09-26 17:02:00生肖徽章:马
日期:2007-09-26 17:01:53生肖徽章:马
日期:2007-09-26 12:38:07生肖徽章:马
日期:2007-09-26 12:37:55
9#
发表于 2006-10-13 06:04 | 只看该作者

Re: Delphi+Oracle

最初由 luckyrandom 发布
[B]如此搭配玩的人比較少喔,偶現在正入手中。。 [/B]


m

使用道具 举报

回复
论坛徽章:
2
2010新春纪念徽章
日期:2010-03-01 11:19:07ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
10#
发表于 2009-5-6 20:49 | 只看该作者
1,db2 v8中 的db2look导出的存储过程是不完整的
2、直接从syscat.procedures 查询text重定向到文件,是有bug的,当text中长度超过32767是就不完整了
3,使用get routine命令导出的是二进制

最好的办法是:


EXPORT TO 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 IN (${exp_schema})
       ORDER BY create_time ;

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表