kettle7.0 mysql_kettle7.0数据库迁移(MySQL迁移到Postgresql,迁移过程中自动创建表结构)...

一、说明

最近做的系统中需要把各种数据库迁移到Postgresql数据库上,使用kettle来进行数据库迁移。

安装完kettle软件,需要将需要的数据库驱动放入在安装包的lib包下。

整套流程分为:2个job,4个trans。

二、所需软件

kettle7.0

JDK1.8

mysql-connector-java-5.1.43

三、具体实现

3.1 数据库迁移-主任务

20190324223510953398.png

3.2 获取变量-数据同步

20190324223511115508.png

3.3 获取全量表名

20190324223511262968.png

3.3.1 获取表名

20190324223511381133.png

3.3.2 字段选择

20190324223511502226.png

3.3.3 复制记录到结果

20190324223511605742.png

3.4 获取变量

20190324223511725859.png

3.4.1 从结果获取记录

20190324223512017851.png

3.4.2 设置变量

20190324223512135039.png

3.5 新建数据库表结构

20190324223512267851.png

3.5.1 获取表名

20190324223512383086.png

3.5.2 新建数据库表结构

20190324223512537383.png

根据不同的数据库设置建表语句

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException{

// First, get a row from the default input hop

Object[] r = getRow();

//本地连接

org.pentaho.di.core.database.DatabaseMeta dbmeta = getTransMeta().findDatabase("kettle_postgres");

if(dbmeta!=null)

{

org.pentaho.di.core.database.Database db=new org.pentaho.di.core.database.Database(dbmeta);

try

{

db.connect();

String tablename = getVariable("TABLENAME");

logBasic("开始创建表:" + tablename);

if(tablename!=null && tablename.trim().length()>0)

{

String sql = db.getDDLCreationTable(tablename, data.inputRowMeta);//${TABLENAME}

sql = sql.replace("TABLE", "TABLE public.");

db.execStatement(sql.replace(";", ""));

logBasic(sql);

}

}

catch(Exception e)

{

logError("创建表出现异常",e);

}finally{

db.disconnect();

}

}

return false;

}

3.6 数据抽取

20190324223512670195.png

3.6.1 新建数据库表结构

20190324223512770781.png

3.6.2 新建数据库表结构

20190324223512895781.png

四、迁移成功

20190324223513034453.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值