用MTK工具导入到DB2

来源:互联网 发布:官方淘宝波司登羽绒服 编辑:程序博客网 时间:2024/05/18 03:09

(过时,但仍有点点用处)

对于oracle db2表结构,函数,存储结构的迁移建议使用MTK工具来实现,这样可以省掉不少工作量,个别少数的采用手工迁移.

      关于MTK工具,从如下url可以下载到1.4.9版本:http://www-306.ibm.com/software/data/db2/migration/mtk/
            直接从开始菜单运行可能会没有响应,这是因为该工具必须基于jdk 1.4的环境以上,请尝试从命令行启动:
           1. set path=%path%;C:/Program Files/IBM/SQLLIB/java/jdk/bin
           2. cd c:/mtk
           3. MTKMain.bat -mtk
           
这样就可以启动了,注意jdk路径按照实际情况设定.
      关于mtk的使用方法,可以参考如下url,非常详细:http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0411yip/
      以下就几个重要页面简单说明下个人使用心得。
Specify Source
            点击Extract ,输入JDBC/ ODBC数据库名和用户名密码,输入一个FILENAME,在以后的操作中将根据此FILENAME生成各种中间脚本。然后选择需要进行转换的OBJECTPROCEDURE转换不理想,基本实现不了)。然后点击EXTRACE进行转换,EXTRACE结果放入FILENAME.src文件中。可以VIEW下查看,此文件中是原ORACLE中的DDL脚本。
      当然,你如果有脚本的话就不用TKT去生成脚本,点击import选择你已有的脚本即可。
 
CONVERT
            然后到CONVERT页面,可以看到上一步产生的FILENAME.src列在了窗口的左部。本页面设置日期的转换格式,语言等,在GLOBAL TYPE MAPPING中还可以对ORACLEDB2之间的数据类型的对应进行调整,比如将ORACLEDATE型数据对应成DB2CHAR型。
点击CONVERT,会得到FILENAME.DB2文件和FILENAME.RPT文件,FILENAME.DB2中保存原ORACLEDDL语句(注释掉的)和DB2DDL 语句, 可以仔细观察此文件来了解DB2ORACLE的区别,另一个文件FILENAME.RPT保存转换过程中的特殊处理的地方,比如INDEX名的长度等.
 
REFINE
            REFINE页面,有发生在转换过程中的详细错误, 可以仔细检查错误并修正必须修正的错误,有些信息可以被忽略.
16 Duplicate definition of object-name
20 Object name has been changed to new-name
 
GENERATE  DATA  TRANSFER  SCRIPTS
            GENERATE  DATA  TRANSFER  SCRIPTS页面可以看到在CONVERT时生成的FILENAME.DB2文件. 点击CREATE  SCRIPTS后会生成一些辅助脚本.大致是将ORACLE的数据SELECT 到以OBJECT_NAME为名字的OUT文件中,然后在DB2中以LOAD方式(在本界面可以选择加载方式)加载数据.
 
Deploy  to  Target
            最后一页Deploy  to  Target会提醒你有多少错误还没有修改.你需要输入目标DB2数据库的信息.注意选择Extract and store data on this system选项
 
            本次到入,通过ODBC连接远端ORACLE导入到本机DB2, 1G MEM 500M数据, 耗时2小时.结果会保存在LOG文件中,可以查看那些不成功的.SQL0286N  找不到页大小至少为XXXXX则需要建立更大的缓冲池.另外几个HTML文件更能直观地统计出导入的结果.
 

          有时, MTK由于一些错误而不能自动LOAD数据,此时可以利用GENERATE  DATA  TRANSFER  SCRIPTS阶段产生的脚本手工插入,首先用FILENAME.DB2DDL语句生成表,然后用DataMove_FILENAME.bat进行导入,DataMove_FILENAME.bat中的内容是形如LOAD  FROM C:/MTK/projects/Unknown7/DataOutScripts/YOURUSER_TABLE_NAME.out of DEL MODIFIED BY  delprioritychar METHOD P(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)   INSERT INTO TT_RECEIVE_MONEY的语句 , 大家可以到C:/MTK/projects/Unknown7/DataOutScripts/下仔细观察下每个表所对应的OUT文件。