• 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 新建数据库表结构

    四、迁移成功

  • 相关阅读:
    Elasticsearch Server,2nd Edition pdf 翻译 中文
    为什么氦气会改变人的音色?
    intellij 文件太大,无法code assistant
    intellij idea rearrange code
    static变量、static方法之间的异同
    linux top 各个标识的含义 详解
    JAVA面向对象编程课程设计——多人扫雷对战
    递归法创建二叉树
    线性表总结
    线性表总结
  • 原文地址:https://www.cnblogs.com/ysit/p/10590573.html
Copyright © 2020-2023  润新知