mysql数据迁移到db2工具_从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

下载

介绍及下载地址

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

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

安装

我安装到了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

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第1张图片

新建项目

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第2张图片

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下

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第3张图片

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

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第4张图片

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

2、Convert

日期格式可以输入

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第5张图片

Advanced Options

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第6张图片

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

可以手动修改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

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第7张图片

Import是执行insert

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

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

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

5、Deploy to target

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第8张图片

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

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

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

最下面的3个

1.建表结构,主外键等

第2次导,就把这项去了

2.抽取数据

3.导入数据

6、报告

mysql数据迁移到db2工具_从mysql迁移到db2,迁移工具IBM Migration Toolkit 2.0_第9张图片

上面的链接都可以点开,

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

如果有的表没导成功,可以清空后,手工执行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时的文件路径

参考:

你可能感兴趣的:(mysql数据迁移到db2工具)