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

一、说明

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

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

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

二、所需软件

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

三、具体实现

3.1 数据库迁移-主任务

3.2 获取变量-数据同步

3.3 获取全量表名

3.3.1 获取表名

3.3.2 字段选择

3.3.3 复制记录到结果

3.4 获取变量

3.4.1 从结果获取记录

3.4.2 设置变量

3.5 新建数据库表结构

3.5.1 获取表名

3.5.2 新建数据库表结构

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

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

3.6.1 新建数据库表结构

3.6.2 新建数据库表结构

四、迁移成功

posted @ 2019-03-24 21:34  微凉微  阅读(4525)  评论(3编辑  收藏  举报