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

时间:2022-09-28 14:19:33

一、说明

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

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

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

二、所需软件

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

三、具体实现

3.1 数据库迁移-主任务

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

3.2 获取变量-数据同步

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

3.3 获取全量表名

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

3.3.1 获取表名

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

3.3.2 字段选择

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

3.3.3 复制记录到结果

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

3.4 获取变量

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

3.4.1 从结果获取记录

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

3.4.2 设置变量

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

3.5 新建数据库表结构

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

3.5.1 获取表名

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

3.5.2 新建数据库表结构

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

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

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 数据抽取

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

3.6.1 新建数据库表结构

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

3.6.2 新建数据库表结构

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

四、迁移成功

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