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

一、说明

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

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

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

二、所需软件

  • kettle7.0
  • JDK1.8
  • mysql-connector-java-5.1.43

三、具体实现

3.1 数据库迁移-主任务

1232644-20190324220432791-871409937.png

3.2 获取变量-数据同步

1232644-20190324220445845-1751607483.png

3.3 获取全量表名

1232644-20190324220459652-344875538.png

3.3.1 获取表名

1232644-20190324220513987-1394434639.png

3.3.2 字段选择

1232644-20190324220527953-975622461.png

3.3.3 复制记录到结果

1232644-20190324220542844-2141754902.png

3.4 获取变量

1232644-20190324220622232-496406449.png

3.4.1 从结果获取记录

1232644-20190324220639618-781739450.png

3.4.2 设置变量

1232644-20190324220654660-1008852101.png

3.5 新建数据库表结构

1232644-20190324220713099-1629972750.png

3.5.1 获取表名

1232644-20190324220726308-1273268825.png

3.5.2 新建数据库表结构

1232644-20190324220736599-54856555.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 数据抽取

1232644-20190324220755618-2059077782.png

3.6.1 新建数据库表结构

1232644-20190324220819149-1569110285.png

3.6.2 新建数据库表结构

1232644-20190324220829128-2045997991.png

四、迁移成功

1232644-20190324220847078-2040038672.png

转载于:https://www.cnblogs.com/ysit/p/10590573.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值