`
happyqing
  • 浏览: 3148738 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0

阅读更多

 

环境

Win7 x64

MySQL:5.5 (jeewxV2.1)

DB2:9.7

 

迁移主要是迁移表和表数据,

推荐使用迁移工具生成建表语句,建好表后,再执行导出的insert语句插入数据,因为工具导入数据可能会遇到这样那样的问题

如果导出的sql是多个,可以用以下命令合成一个

copy *.sql all.sql 也可以把这句话放到bat批处理文件里

 

插入数据前先禁用所有外键,插入后再启用

 

禁用约束基本语法:
ALTER TABLE 表名称 ALTER FOREIGN KEY 约束名称 NOT ENFORCED
启用约束基本语法:
ALTER TABLE 表名称 ALTER FOREIGN KEY 约束名称  ENFORCED

(这些语句可以在后面的报告(日志)里找到)

 

介绍

IBM Migration Toolkit 是IBM官方出的迁移工具,支持多种源数据库迁移到DB2或Informix

源数据库:Sybase、SQL Server、Oracle、Informix、MySQL

目标数据库:DB2、Informix

 

下载

介绍及下载地址

http://www.ibm.com/developerworks/cn/data/downloads/migration/

MKT是个java程序,有windows版和linux版

如果你没有IBM账号,请到此处下载

http://download.csdn.net/detail/haveqing/9352033

 

安装

我安装到了D:\MTK,

 

准备

1、因为我是64位环境,需要使用64位jdk,否则可能会报错,配置环境变量

2、把mysql驱动mysql-connector-java-5.1.24-bin.jar放到%JAVA_HOME%\jre\lib\ext下

3、迁移时不支持timestamp on update CURRENT_TIMESTAMP,需要on update CURRENT_TIMESTAMP先去掉,迁移后再在目标上加,源库上也别忘了还原。

源表:weixin_group、weixin_huodong需要调整

4、db2建库脚本,pagesize我选的是32K,16K的也可以

db2 CREATE DATABASE jeewx AUTOMATIC STORAGE YES  ON 'D:\' DBPATH ON 'D:\' USING CODESET UTF-8 TERRITORY CN COLLATE USING UCA500R1_LZH PAGESIZE 32768

 

运行

菜单 IBM Migration Toolkit 2.0 -- Toolkit

运行后cmd窗口会报一个错,不影响使用

java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.String



 

新建项目

 

1.Specify Source

Extract 导出源库结构

要是odbc,需要下载安装mysql的odbc驱动,但是似乎没有64位的,用不了odbc

选择 Native driver information -- Use native JDBC dirver

需要把mysql驱动mysql-connector-java-5.1.24-bin.jar放到%JAVA_HOME%\jre\lib\ext下

 

选择源库,输入数据文件名

 

点击Extract后列表里会生成jeewx.src,双击可单开查看,里边含有建表语句,主外键等

 

2、Convert

日期格式可以输入

 

Advanced Options

不要尝试在这里指定表空间,因为你指定了,他会去创建一个,再使用。

可以手动修改jeewx.db2文件指定表空间

语法:

CREATE TABLE JEEWX.TEST  (
		  A CHAR(1) )   
    IN jeewx_data
    INDEX IN jeewx_idx;

使用UE正则替换
%)!$
替换为
)
IN jeewx_data
INDEX IN jeewx_idx!

 

点击Global Type Mapping可查看编辑类型映射,一般默认的就行

左侧的jeewx.src是源库的建表语句,右侧convert后生成的是目标库的建表语句jeewx.db2

双击jeewx.db2可查看编辑

 

3、Refine

可查看Convert的报告,要是有错误需要调整,警告和消息可以忽略。

 

4、Generate Data Transfer Scripts

 
Import是执行insert

load是从底层装载数据文件(效率高)

这个两个选那个都行,最后看选那个错误少,就用哪个。
 

点击Create Scripts后,右侧会生成一堆脚本

 

5、Deploy to target

 

可以导入到本地数据库,也可以导入到远程数据库(远程数据库也可以先编目到本地)

不要选择Use your system current user ID and password

输入用户名,密码,会导入到这个用户名对应的模式下(用户名和模式是同名的)

最下面的3个

1.建表结构,主外键等

第2次导,就把这项去了

2.抽取数据

3.导入数据

 

6、报告

上面的链接都可以点开,

下面的红色字体报错的也可以点开,查看日志,分析解决

 

如果有的表没导成功,可以清空后,手工执行insert

如weixin_texttemplate表content字段需要调大

truncate WEIXIN_TEXTTEMPLATE immediate;

 

修改TIMESTAMP默认值

ALTER TABLE WEIXIN_GROUP ALTER COLUMN ADDTIME SET WITH DEFAULT CURRENT_TIMESTAMP ;
ALTER TABLE weixin_huodong ALTER COLUMN endtime SET WITH DEFAULT CURRENT_TIMESTAMP ;

 

部分报错的解决方法

The connection to the DB2 database jeewx failed.
[jcc][10389][12245][3.57.82] 装入本机库 db2jcct2, java.lang.UnsatisfiedLinkError: D:\Program Files\IBM\SQLLIB\BIN\db2jcct2.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform 时产生故障: ERRORCODE=-4472, SQLSTATE=null
用64位jdk

SQL3126N  远程客户机需要文件和目录的绝对路径。
1.改用db2move import命令导入
2.如果使用"db2 load from"的话load的数据文件一定要是db2远程服务器上的保存的文件才能load,否则会报错,"SQL3126N  远程客户机需要文件和目录的绝对路径"
而messages文件则是保存再本地的。
3.如果你想要load本地的数据文件到远程db2服务器,可以使用"db2 load client from",这样就可以把本地的数据文件load至远程服务器了。(这个没试过)
4.可以把数据文件拷贝的远程服务器上,再改变load时的文件路径

 

参考:

通过 IBM Migration Toolkit 支持把数据从 MySQL 迁移到 DB2 和 Informix Dynamic Server
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0807patel/
使用 IBM DB2 Migration Toolkit 迁移数据
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0411yip/
从 MySQL 或 PostgreSQL 迁移到 DB2 Express-C
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0606khatri/
DB2与MySQL数据转移
http://www.shangxueba.com/jingyan/107360.html

 

  • 大小: 32.7 KB
  • 大小: 17.6 KB
  • 大小: 12.7 KB
  • 大小: 20.2 KB
  • 大小: 12.3 KB
  • 大小: 23.6 KB
  • 大小: 21.4 KB
  • 大小: 20.7 KB
  • 大小: 37.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics