KETTLE实现循环批量多表抽取添加字段

    xiaoxiao2022-07-05  150

    转自: https://blog.csdn.net/qq_41704358/article/details/79519133

    kettle 教程(二):常用输出(插入更新、表输出、执行 SQL 脚本): https://blog.csdn.net/qqfo24/article/details/82215761

    kettle_动态表(每日新建表、表格式统一)数据同步: https://blog.csdn.net/sky08050025/article/details/79608297

    kettle_1自动创建数据库表字段: https://blog.csdn.net/weixin_34293902/article/details/88228663

    kettle_动态表(每日新建表、表格式统一)数据同步: https://blog.csdn.net/sky08050025/article/details/79608297

    从官方例子入手 (详解数据清洗)——kettle实战(5):https://blog.csdn.net/qq_22073849/article/details/70171396

    kettle 执行sql脚本的使用方法: https://blog.csdn.net/jinlonglv_555/article/details/53707393

    Kettle定时抽取两个库中的两个表到目标库SYS_OPLOG表:  https://www.cnblogs.com/zhangmingcheng/p/7822822.html

    Kettle实现动态SQL: http://blog.itpub.net/29254281/viewspace-1270110

    使用Kettle数据迁移添加主键和索引 : https://yq.aliyun.com/articles/26576

    Kettle定时抽取两个库中的两个表到目标库SYS_OPLOG表: https://www.cnblogs.com/zhangmingcheng/p/7822822.html

     

     

    场景:将kettle资源库抽取到另一个数据库中并输出抽取表单,(本文用的是MySQL).不废话直接发

    方法一

    1.总架构

    新建作业

    2.获取表的数量

    这步用到表输入和复制记录到结果字符串组件,其他可以获取表的组件也可以自由发挥

    3.执行表数量判断并设置变量,用到JavaScript组件

    JAVA代码如下:

    var prevRow=previous_result.getRows(); if (prevRow == null && (prevRow.size()=0)) { false; } else {         parent_job.setVariable("table_name", prevRow);//ArrayList存储表名变量 parent_job.setVariable("size", prevRow.size());//存储执行表的总数量 parent_job.setVariable("i", 0);//循环控制变量 parent_job.setVariable("TABLENAME", prevRow.get(0).getString("TABLE_NAME","")); true;

    }

    4.设置变量

    这步是设置抽取时间戳的时间变量,本步放在全量抽取里面也可以每次循环都会调用会影响整体速度.

    5.循环控制

    这步在作业里用到检验字段的值、转换和JavaScript组件

    JavaScript组件,JAVA代码如下:

    var list_Tables = parent_job.getVariable("table_name").replace("[","").replace(" ","").replace("]","").split(","); var size = new Number(parent_job.getVariable("size")); var i = new Number(parent_job.getVariable("i"))+1; if(i < size) { parent_job.setVariable("TABLENAME", list_Tables[i]); } parent_job.setVariable("i",i); true;

    转换设置如下:

    组件名称如上显示

    6.PRINT_TABLES,这个步骤可以省略,本人目的是看看里面都有那些表.

    方法二

    1.总架构

    新建作业

    2.设置变量、获取表的数量和PRINT_TABLES同上

    3.关键差别——全量抽取作业组件

    勾选执行每一个输入行?

    a.设置表变量

    用到从以前的结果获取记录和设置变量组件

    b.全量抽取同上一个方法

    以上两种方法个人测试感觉第一种快些,希望大家将测试结果写到评论方便大家使用.

    上述两种方法下载地址:点击打开链接 ---------------------  作者:帝轻  来源:  原文:https://blog.csdn.net/qq_41704358/article/details/79519133  版权声明:本文为博主原创文章,转载请附上博文链接!

    最新回复(0)