Kettle多表迁移数据

需求:

1、从A数据库(源库)迁移多表数据到B数据库(目的库)。

2、修改数据库表名,A数据库(源库)的表名格式是xx.xxx,B数据库(目的库)的表名格式改为xx_xxx。

创建目标端数据库表结构步骤:

一、定义DB链接,并设置共享;


二、准备要迁移的A数据库(源库)表清单文件(filelist.txt),第一行是文本头部


三、读取A数据库(源库)表清单文件转换(第一个转换)





三、设置变量${TABLENAME}(用于存放A数据库的表名),设置变量${TABLENAME_1}(用于存放B数据库表名)(第二个转换)






四、根据源表结构创建目标表结构转换(第三个转换)



public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException{
// First, get a row from the default input hop
//
Object[] r = getRow();

//本地连接
logBasic("开始");

org.pentaho.di.core.database.DatabaseMeta dbmeta = getTransMeta().findDatabase("B数据库的DB链接");


if(dbmeta!=null)
{
    org.pentaho.di.core.database.Database db=new org.pentaho.di.core.database.Database(dbmeta);
    try
    {
        db.connect();
	logBasic("链接数据库");
        String tablename = getVariable("TABLENAME_1"); //目标表名由xx.xxx改为xx_xxx
        logBasic("开始创建表:" + tablename);
        if(tablename!=null && tablename.trim().length()>0)
        {
            String sql = db.getDDLCreationTable(tablename, data.inputRowMeta);
            db.execStatement(sql.replace(";", ""));
            logBasic(sql);
        }
    }
    catch(Exception e)
    {           
        logError("创建表出现异常",e);
    }finally{
        db.disconnect();
    }
}
return false;
}

注:如果源端数据库表为空(无记录),则无法读取其表结构,不能创建目标表。

五、创建目标表结构作业(第一个作业)




六、批量创建目标表结构作业(第二个作业)




七、执行“批量创建目标表结构作业”可在目标数据库中创建文件清单(filelist.txt)里的数据库表结构。

从源端抽取数据到目标端步骤:

八、数据迁移转换(第四个转换)



可以在SQL语句中筛选数据范围。


九、数据迁移作业(第三个作业)




十、批量数据迁移作业(第四个作业)




十一、执行“批量数据迁移作业”,将数据从源端抽取迁移到目标端。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值