在使用ETL工具kettle做数据导入的时候,如果数据量比较大,如果不使用分页导入数据,因为一次性加载数据量太大,会导致内存溢出错误,所以使用适当的分页,可以避免此错误的出现。

实现的思路是,先把分页的初始条件设置为变量, 然后判断分页条件是否符合,如果不符合,则直接退出,如果符合,则继续导入,本次导入完成之后,执行控操纵,然后再次到分页条件判断,一词进行,直到最后一页导入完成。下次判断就会返回false,直接跳到成功步骤。

job整体流程图如下:

详细步骤拆分:

1:设置分页变量

在第一个转换中设置两个命名参数:

把参数设置成变量,也是job里面的第1个转换的流程只设置变量即可。

使用JS脚本校验分页条件是否满足(具体代码如下):

parent_job.getVariable("CURR_PAGE");//job中获取变量方法

parent_job.setVariable("TOTAL_PAGE",total_page);//job中设置变量方法

var currPage = parent_job.getVariable("CURR_PAGE");// 从job获取当前页数值(当前第几页)

var total_count = parseInt(parent_job.getVariable("TOTAL_COUNT")); // 从job中获取本次导入的总条数

var page_size = parseInt(parent_job.getVariable("PAGE_SIZE")); // 分页条数

var total_page = parent_job.getVariable("TOTAL_PAGE"); // 本次导入的总分页数

if(total_page == null || total_page == undefined || total_page == ""){

total_page = total_count / page_size;

if(total_count % page_size > 0){

++total_page

}

parent_job.setVariable("TOTAL_PAGE",total_page);

}else{

total_page = parseInt(total_page);

}

if(currPage == null || currPage == undefined || currPage == ""){

currPage = 1;

}else{

currPage = parseInt(currPage);

}

if(currPage > total_page){

false;

}else{

var start = (currPage -1 ) * page_size;

parent_job.setVariable("START_ROW",start);

parent_job.setVariable("CURR_PAGE",currPage+1);

true;

}

最后第2个转换流程如下:表输入输出使用limit分页如下图:

要替换sql中变量需要勾选下面一条:替换sql语句里的变量。

到这里,一个循环分页的数据抽取导入的job就完成了,本文 只是作者在使用中的一次可行性尝试,如有不正确还请留言讨论。

参考链接:http://blog.csdn.net/butioy_org/article/details/54972836

kettle mysql 分页_kettle循环分页导入数据相关推荐

  1. 华夏名网虚拟主机如何导入mysql/mssql数据库,怎样自已导入数据到华夏名网数据库

    华夏名网虚拟主机如何导入mysql/mssql数据库,怎样自已导入数据到华夏名网数据库 华夏名网代理客服losoon经常帮用户导数据和数据库,现总结一点经验,为更多的华夏名网用户提供方便,如何自已导入 ...

  2. 使用python实现mysql测试数据的准备(大批量导入数据)

    一.在MySQL中创建一个空表 表中有id(int),name(varchar),age(int),sex(varchar)字段 注意:数据库的格式需要支持中文 二.python安装pymysql p ...

  3. mysql TMM_mysql使用命令导出导入数据(数据备份、恢复)

    1.使用mysql进行数据备份.恢复我们使用最多是的Navicat for MySQL客户端工具: 数据备份: DataBase(选中数据) – > Dump SQL File(转储SQL文件) ...

  4. mysql mongodb批量操作_mongodb批量导入数据

    mongodb 命令行可以把sql文件批量导入数据,首先把sql文件加工称如下格式 zip.sql源文件 INSERT INTO POST(id,PostNumber,Province,City,Di ...

  5. 【Kettle学习笔记】从Hbase导入数据至Mysql

    1.连接Hadoop集群与MySQL 1-1 下载当前集群的Hbase配置文件 1-2 解压改配置文件至cdh510目录下 1-3 修改D:\kettle\data-integration\plugi ...

  6. mysql强制编码导出、导入数据

    mysql在windows 和linux上面安装是可能出现编码不同,如果从这两个数据库进行数据的导入和导出江出现乱码的情况,所以我们在导入和导出的可以加上强制编码来进行数据库的导入以及导出的操作: 1 ...

  7. mysql导出教程_MySQL导出导入数据实现教程

    参数说明 MySQL连接 -u$USER 用户名 -p$PASSWD 密码 -h127.0.0.1 主机名或者IP地址 -P3306 端口 –default-character-set=utf8 设置 ...

  8. kettle mysql 配置_Kettle数据库配置抽离

    在使用ETL工具Kettle时候,为了使作业或转换具有通用性,有时候,我们需要将数据库的连接配置从脚本或转换中抽离出来,下面介绍一种方案,该方案主要涉及的文件有: # 这两个文件,默认是在系统的用户目 ...

  9. kettle mysql 参数_kettle参数、变量详细讲解

    kettle参数.变量详细讲解 kettle 3.2 以前的版本里只有 variable 和 argument,kettle 3.2 中,又引入了 parameter 概念:variable 即env ...

最新文章

  1. win10+Linux双系统安装及一些配置问题
  2. [IOS]UIWebView实现保存页面和读取服务器端json数据
  3. 八类网线和七类网线的区别_什么是七类网线?七类网线水晶头如何制作?
  4. python canny优化_python实现canny边缘检测
  5. php 字符串进行计算_PHP eval() 函数把字符串按照 PHP 代码来计算
  6. uva 10803(floyd)
  7. Growth—电子书预览版
  8. ZendStudio 安装
  9. Python面向对象编程:数据封装、继承和多态
  10. Hi3518EV200实现H264视频采集的源码及流程详解(不依赖SAMPLE库)
  11. 如何提升团队凝聚力,打造高绩效团队?
  12. UC浏览器如何开启html5,如何开启手机uc浏览器中的极速模式
  13. 银河麒麟(kylin)V10桌面版
  14. 以图搜图-自动生成图模式匹配Cypher
  15. 三次插值ClampedB样条曲线Matlab代码实现
  16. Java面试题全集(上)-基础知识
  17. Java写的第一个小游戏(续)
  18. [普及] NOIP 2012 文化之旅
  19. 蓝桥云题库之国王游戏——Python满分解答
  20. CHAR,NCHAR,VARCHAR,NVARCHAR

热门文章

  1. android 7.0权限组,huawei p9 plus(VIE-AL10)Android7.0/EMUI5.0更新动态交流
  2. Django---ORM简介丶单表操作丶增删改查
  3. C# 倒计时数秒工具
  4. 不可不学的英语骂人句子
  5. Oracle 基础语句 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数...
  6. IDEA 上传项目到Github
  7. 联想小新进入BIOS方法(解决安装VM虚拟机提示“Intel VT-x处于禁用状态”)
  8. iOS Swift 判断手机机型 已更新 至iPhone12
  9. webrtc音频QOS方法一(NetEQ之音频网络延时DelayManager计算)
  10. SketchUp:解决三维图中显示交点粗的现象图文教程