Heim  >  Artikel  >  Datenbank  >  DB2导出存储过程的DDL语句的方法

DB2导出存储过程的DDL语句的方法

WBOY
WBOYOriginal
2016-06-07 16:48:452306Durchsuche

日常DBA的工作就是获取SP的代码,以便于分析或者移植到别的环境,如何快速获取SP的DDL呢,总结了下,DB2在获取SP的DDL语提供的方

日常DBA的工作就是获取SP的代码,以便于分析或者移植到别的环境,如何快速获取SP的DDL呢,总结了下,DB2在获取SP的DDL语提供的方法还是比较多,可以供参考:

1  select routinename,text from sysibm.sysroutines;

上面是通过数据字典表查询获取,与其等效的系统视图查询获取方法
DB2 SELECT CHAR(ROUTINESCHEMA,20), CHAR(ROUTINENAME,20), TEXT FROM SYSCAT.ROUTINES >
此方法的缺陷是当text>32767时,导出的该条存储过程是不完整的。

2 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 .

当然上面方法的好处就是均可以指定具体SP名称,对单独的SP进行DDL的结构导出。

3 DB2LOOK 命令的 -e 选项中增加了对存储过程的创建语句的提取
  db2look -d   -cor -e -o

4 使用export:
db2 "EXPORT TO procudure.del OF del lobs to sp.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 ORDER BY create_time ; "

注意必须加lobs to选项,否则大的存储过程定义只能导出一部分

上面的第三和第四种方法无法指定SP名称,基本是全库的SP的所有结构,所以可以根据工作中的需求选择合适快捷的方法,总而言之,DB2提供了足够多的方法便利了DBA在日常工作需求。

DB2数据库性能调整和优化(第1、2版) PDF

DB2数据库性能优化介绍

DB2 9.7 for Linux 5.4安装详细步骤

本文永久更新链接地址:

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn