用kettle 进行数据库的迁移--DB2 迁移到 mysql

1、前言

开始给用户提供的整套系统是部署在WAS服务器和DB2数据库上的,因为WAS和DB2都属于IBM收费产品,根据用户需求,为了节省这笔开销,想使用免费开源的数据库和Tomcat服务器。因而数据库选择了MariaDB。这
就涉及到,在不动系统代码的状况下,怎样直接将DB2数据库的表结构、数据、主键、索引等迁移到MariaDB上。接着这个苦差事就落到我头上了。第一次作这类型的工做,在网上找各类数据库迁移的工具,最终选择了kettle这款开源的工具,通过几天下来,终于完成了,特此记录,方便之后查阅。java

2、kettle 的使用

Kettle是一款国外开源的ETL工具,纯java编写,能够在Window、Linux、Unix上运行,数据抽取高效稳定。
1.新建一个job,建立两个DB链接:source、target(源数据库和目标数据库链接),在菜单中找到【复制多表向导】,点击进行相关操做:
Centermysql

2.选择源数据库和目标数据库
Centersql

3.选择所需迁移的表
4.编辑生成的job文件名:qy.kjb,和文件目录,编辑好后【Finish】
5.运行qy.kjb,可在test2数据库中看到成功生成迁移来的表。
Center数据库

3、在使用过程当中遇到的问题

  • 上述方法在数据库迁移过程当中没法把主键和索引进行迁移服务器

解决方法:在DB2的系统表中,查找到主键和索引全部的信息。而后拼接成mysql建立主键和索引的脚本
例如:
//从db2 的系统表中查询到主键信息的sqleclipse

select * from SYSCAT.KEYCOLUSE;

//拼接成mysql 建立主键的sql工具

select 'ALTER TABLE '|| Tablename ||' ADD PRIMARY KEY' || ' (' || ColumnName ||');'  from SYSCAT.KEYCOLUSE where TABSCHEMA='XX';

此时会生成mysql 的执行脚本,将脚本放入到mysql 中,就能够建立全部迁移过来表结构的主键测试

索引也是同理。只不过DB2 系统表中的索引是spa

select * from syscat.indexes;
  • 在执行迁移的时候,有些job 失败,看生成的sqlcode

句有中unknown类型。这个缘由主要是DB2的时间类型直接转到mysql中没有与之对于的类型, 因此须要

把UNKNOWN ->DATETIME。
通过测试,此类型在迁移成功后,能正常的插入数据。

4、若是想更好的利用kettle能够将kettle的源码导入到eclipse中部署启动,这是纯java代码开发的开源工具。很是有研究价值!

刚开始研究kettle,,未完 待续。。。

相关文章
相关标签/搜索