1、Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。下载图形化界面的zip包格式的,直接解压缩使用即可。安装部署模式这里不说了,自己可以根据自己的需求安装为单机模式或者集群模式。    
Kettle的社区官网:https://community.hitachivantara.com/docs/DOC-1009855        
Kettle的下载地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/
kettle国内镜像下载:http://mirror.bit.edu.cn/pentaho/Data%20Integration/
2、由于这里只是演示了如何配置通过时间戳和批次号增量的导入数据,所以具体的操作不再叙述,具体的使用自己可以根据需求来使用。

Job如下所示:

思路。
批次量将一批数据从一个数据库导入到另外一个数据库,而且每批次的数据量不能重复。
这里使用时间戳,你也可以使用批次号。原理基本一样,都是确定每一批次的数据量。
job步骤:第一步。start,可以设置定时或者手动点击启动job。第二步。执行转换。第三步。将start_time=next_time。第四步。成功。        1、Start,类型可以选择不需要定时,时间间隔,天,周,月。
默认不需要定时,如果需要定时的话,首先把重复的框勾选。
然后如果选择时间间隔的话,可以输入以分钟计算的间隔或者以秒计算的间隔。
如果按天,就选择天,然后选择每天几天的几分开始跑。
如果按照周,就选择每周的每天几点几分开始跑job。
如果是每月的话,就选择那一月的每天几点几分跑job。2、转换的作业项名称,自己填自己的作业项名称,
在转换设置的tab然后自己填自己的转换文件名core_table_name_down。
高级tab,设置日志tab,位置参数tab,
命名参数tab,如果自己需要的话可以自己使用和研究。3、作业项名称,自己填自己的,数据库连接,自己新建和编辑即可。
SQL脚本,自己填上自己的sql脚本。
这个主要是批次量导入数据,所以使用时间戳来实现批次量导入数据。
所以每次批次量导入数据结束,将start_time=next_time。这样下次
执行这个job,就是下一批的数据量了。
update 数据表名称 set start_time=next_time where table_name='数据表名称' and part=第几步


转换如下所示:

注意:
1)、由于是将上一步查询的值插入到下一步?的地方,所以一定要注意。
将带有?的步骤,替换SQL语句里面的变量,进行勾选。
从步骤插入数据,进行选择上一步的名称。
2)、步骤名称,自己起自己的名字。数据库连接,自己新建和编辑。目标模式,如果是Greenplum或者postgresql要输入自己的模式。目标表就是自己的数据表。提交记录数量,一般1000或者2000。下面主选项使用批量插入进行勾选。数据库字段,自己获取字段和映射,更新,用来查询的关键字和更新字段。自行配置。Switch/Case,Switch字段和Case值数据类型和Case值。自己根据自己的字段和类型进行填写。change步骤:第一步。在数据源的库表里面查询出这批数据的最大时间或者最大的批次号。第二步。然后在自己的数据表里面获取到开始时间或者最小的批次号(此数据表自己初始化好起始时间start_time或者最小批次号和查询条件,比如第几步和那一张表)。将第一步获取到的最大时间或者最大的批次号传递到第二步。第三步。更新自己的初始化好的数据表,将自己初始化好的数据表的最大时间或者最大批次号字段修改。同时进行表输入进行查询出数据。然后将这一步查询的数据传递到Switch/Case。第四步。Switch/Case。将上一步的数据根据Switch/Case。进行传递。第五步。进行各种数据表的输出。        第一步:
1)、select '数据表名称' as table_name, 第几步 as part, COALESCE(max(update_time), now()) as next_time from 数据表名称
2)、postgresql,COALESCE()函数 主流数据库系统都支持COALESCE()函数,这个函数主要用来进行空值处理,其参数格
式如下: COALESCE ( expression,value1,value2……,valuen) 。COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。如果
expression不为空值则返回expression;否则判断value1是否是空值,如果value1不为空值则返
回value1;否则判断value2是否是空值,如果value2不为空值则返回value3;……以此类推,
如果所有的表达式都为空值,则返回NULL。
3)、MySQL,IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。IFNULL(expression_1,expression_2);第二步:
1)、select ? as table_name, ? as part, start_time, ? as next_time from 数据表名称 where table_name='数据表名称' and part=第几步
2)、将第一步的三个参数,传递到第二步的三个问好的地方。第三步:查询出每个case所需要的值的数据。同时修改next_time最大时间或者最大批次号。
select *, CASE  WHEN "字段"='标识位' THEN (select to_char(to_number(COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||'00000'), '9999999999999') + 1, '9999999999999')
from core_data.dn_data_reconciliation where "TableName"='数据表名称' and "字段"='标识位') END AS "Cd_batch", 'I' as "Cd_operation"
from 数据表名称 where '数据表名称'=? and 第几步=?  and update_time>? and update_time<=?

待续.....

使用kettle来根据时间戳或者批次号来批量导入数据,达到增量的效果。相关推荐

  1. kettle查询mysql获取uuid_使用kettle来根据时间戳或者批次号来批量导入数据,达到增量的效果。...

    注意:1).由于是将上一步查询的值插入到下一步?的地方,所以一定要注意. 将带有?的步骤,替换SQL语句里面的变量,进行勾选. 从步骤插入数据,进行选择上一步的名称.2).步骤名称,自己起自己的名字. ...

  2. kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)

    这个实验主要思想是在创建数据库表的时候, 通过增加一个额外的字段,也就是时间戳字段, 例如在同步表 tt1 和表 tt2 的时候, 通过检查那个表是最新更新的,那个表就作为新表,而另外的表最为旧表被新 ...

  3. SAP PP 成品工单批次号跟所消耗的半成品批次号一致

    SAP PP 成品工单批次号跟所消耗的半成品批次号一致 在制药行业里经常有这样的场景或者需求:成品工单是一个包装工单,将生产好的半成品加上内外包材,经过包装后做成可以交付给客户的成品,成品的批次的属性 ...

  4. P3项目全球模板狗血设置之二 --- 移动类型523收货不能自动创建批次号

    P3项目全球模板狗血设置之二 --- 移动类型523收货不能自动创建批次号 在P3项目中,因项目实施范围限制等诸多原因,对于工厂的自制品,在SAP系统上使用MIGO + 523 移动类型组合来完成收货 ...

  5. SAP MM 启用批次管理的物料MB21创建预留单据时批次号可以为空!

    SAP MM 启用批次管理的物料MB21创建预留单据时批次号可以为空! 如下预留, 批次号字段为空. 实际上该物料是有激活batch management的, For MB21, it is just ...

  6. js生成批次号_一文知晓MES系统中的批次管控功能

    更多精彩,请点击上方蓝字关注我们! MES系统中的生产批次管理,在制造企业特别是流程制造行业,存在一些需要按批号管理的原材料.半成品和成品统一称它们为料号,这些料号在库房和加工现场都有明确的批次标识并 ...

  7. js生成批次号_【管理】MES系统中的批次管理

    精益生产|智能制造|管理前沿我们来自丰田,分享生产技术与管理方法 立即加星标,第一时间看好文 来源|MES百科 全文总计2000字,需阅读5分钟,以下为正文: MES系统可以帮助制造企业解决很多生产管 ...

  8. MIGO/CO11N 批次创建增强 自定义批次号创建规则

    MIGO/CO11N 批次创建增强 在MIGO和CO11N中实现自动带出自定义规则的批次号,实现批次增强,如下所示: 输入采购凭证时批次为空 实现效果:在点击下方的"项目确定"并点 ...

  9. SAP批次号生成时,最后两位顺序号超过了99,需要和字母和数字组合生成新的批次号

    背景:项目中,批次号的最后两位是顺序号,最后两位顺序号累加超过99会引起批次号重复,需要和字母结合生成批次号,比如:AAAAAA00.AAAAAA01.AAAAAA02.AAAAAA03......A ...

最新文章

  1. Centos7 使用Docker安装tomcat
  2. 计算机运算器实验原理,计算机组成原理运算器实验—算术逻辑运算实验
  3. 好玩的100个网站收藏
  4. 现身说法,给职场新人的投资理财建议
  5. 阿姆达尔定律(Amdahl’s Law) 计算
  6. 海康DS-2DY5223IW-DM
  7. ElasticJob汇总
  8. 高手需要具备的思维模型
  9. 苹果App Store 四年历程回顾
  10. matlab 遥感图像分类,彩色遥感图像分类算法及Matlab实现
  11. 周报—FPGA(浩子)
  12. 十大流行开源软件推荐
  13. Protractor小结
  14. Vue之assets图片加载不出来
  15. 密钥创建ssh-keygen
  16. calico源码分析-ipam(2)
  17. 必应壁纸php,PHP版Bing壁纸下载源码
  18. 研究领域、研究课题、研究方向三者的区别
  19. 基于uni-app手机端后台管理系统uni-uadmin
  20. 二叉树练习:最小函数值

热门文章

  1. 数据,数据对象,数据元素,数据项的关系图
  2. tf.nn.batch_normalization() 和 tf.layer.batch_normalization()
  3. 物联网主要应用在哪些领域
  4. JMockit didn't get initialized
  5. 电脑耳机有杂音怎么办?【详解】
  6. Ubuntu 20.04添加临时/永久路由
  7. 动态规划:最长子序列问题
  8. 小滴课堂工业级paas云平台+springcloudAlibaba+JDK11综合项目实战
  9. WPF技巧(5)元素的加载与卸载(Loaded and Unloaded)
  10. 计算机组成原理课程设计_微程序控制的运算器设计