设为首页 收藏本站
查看: 2074|回复: 0

[经验分享] Sybase脚本移植到DB2中

[复制链接]

尚未签到

发表于 2016-11-19 06:00:54 | 显示全部楼层 |阅读模式
 




DB2

目前碰到一个任务,需要将原本基于Sybase的系统移植到DB2。前期工作中主要都是对SQL脚本的改写。鉴于目前对Sybase和DB2都不是很熟,所以开此记录日志。记录在过程中所遇到的各种问题。
db2中的系统表介绍
  DB2 Command Line Processor(DB2 CLP)是所有 DB2 产品中都有的,可以使用这个应用程序运行 DB2 命令、操作系统命令或 SQL 语句。
  在 DB2 数据库被创建的时候,DB2 会创建一些系统表。这些系统表中记录了所有数据库对象的信息,表或视图的列的数据类型,约束的定义,对象的权限和对象之间的依赖关系等。这些系统表的模式为 SYSIBM,其表名以 SYS 作为前缀。例如: SYSTABLES、SYSVIEWS 等等。
  DB2 为这些系统表建立了相对应的只读视图。这些视图的模式是 SYSCAT,它们的内容是其相对应的系统表的全部或者部分内容。这些视图的名字没有 SYS 的前缀。例如:SYSCAT.TABLES (是 SYSIBM.SYSTABLES 的视图。
  我们可以通过 LIST TABLES FOR SYSTEM 或 LIST TABLES FOR SCHEMA schemaname 命令查看所有的系统表和相关的视图信息。下面我们会介绍一些本文用到的系统表和视图。

移植建表操作:
  不需要改动的地方:


  • CHAR(30)
  • Varchar(30)
  • 简单SQL语句本身, select, create table, grant等等
  需要修改的地方:


  • INT 改为: INTEGER
  • GO 改为: 封号 ;
  • CLUSTER NONCLUSTER 修改: 直接删除
  • tinyINTEGER tinyInt 修改: SMALLINT
  • smallInteger 修改: SMALLINT
  • exec 修改: 直接删除
  • Timestamp 修改: TIMESTAMP(10, 6)
  • varchar(30) char(30) 修改: 不用修改
  • money 修改: NUMERIC(19, 4)
  • print 修改: echo
  • image 修改: BLOB(1073741824)
  • TEXT 修改: CLOB(2147483647)
  执行命令为

db2 -stvf tab.sql
  原先的Sybase SQL脚本文件如下:

存储过程
  db2在创建或者更新存储过程的过程中,需要使用特殊的结束字符 @ 。

connect to oibsdb @  —- 连接到数据库 drop procedure sp_EXPLTTel @     —-  删除一个存储过程 create procedure sp_EXPLTTel (    —- 创建存储过程     IN I_deal_no            char(15),    —-     IN I_goods_services     varchar(6500),     INI_document_required   varchar(6500),     IN I_add_conditions     varchar(6500) ) LANGUAGE SQL    —- BEGIN     DECLARE v_Debug     CHAR(1)      default ‘0’ ;     DECLARE s_rtcd      INTEGER      DEFAULT 0;     DECLARE s_rtst      CHAR(5)      DEFAULT ‘00000’ ;     DECLARE s_text      VARCHAR(500) ; END
  db2脚本执行命令:

db2 -td@ -vf sp_EXPLTTel.sql but      —-进入db2控制台 select * from syscat.procedures where procname = ‘sp_EXPLTTel’
IDE UltraEdit
  修改过程是一个比较辛苦的体力活。一些简单语法规则的不断重复改写,如何才能提高效率。 首先是利用UltraEdit的全局替换功能,寻找一些可以全局替换的元素做统一替换


  • print 替换为 echo
  • go 替换为 封号 ;
  • Sybase中原有C风格的注释进行全局替换 /*进行替换
  • int 替换为INTEGER, tinyInteger, tinyInt 替换为SMALLINT
  DB2的SQL脚本中所支持的注释方式只有单行注释—-。UltraEdit中有类似eclipse中的多行快捷键注释功能(可以类似于eclipse中一样设置为快捷键Ctrl+Shift+C),但是默认的注释方式是在行首加 # 号,这样,我们可以使用 # 号对无用行进行注释之后,在最后进行全局替换为 —- 来减少手动加注释的工作量。
  更进一步,有时候有些代码的缩进不是很规范,可以在该缩进的地方通过注释快捷键添加两个#号。然后将两个 ## 全局替换为四个空格,这样就迅速的实现了缩进操作。 


 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302235-1-1.html 上篇帖子: DB2 9 基础(730 检修)认证指南,第 5 局部: 措置 DB2 工具(2) 下篇帖子: DB2缓冲池、表空间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表