Kettle使用初体验之批量数据入库体验插入更新和表输出组件使用区别

Kettle使用初体验之批量数据入库实验

##场景

场景

      有多个千万级的数据文件需要导入到Oracle数据库中,如何快速入库。
      文件是文本CSV格式,列分隔符为&^&,数据中含有很多中文信息,也包含了很多特殊字符。

问题

     在导入过程中可能会引起超出数组,特殊字符引起异常。
     在一定量的错误情况下是可以容忍的,但不能因为部分错误导致任务中断。

结论

在这里插入图片描述

实验步骤

实验一:使用文本文件作为输入,输出使用“插入/更新”组件

在这里插入图片描述
文本文件输入的配置如下:

(1)加载数据文件

在这里插入图片描述

(2)文件内容切分配置
在这里插入图片描述

(3)读取文件的错误处理策略
在这里插入图片描述

(4)设置文件切换后的列信息,便于与输出端做一一匹配
在这里插入图片描述

(5)输出端设置
注:此处勾选“不执行任何更新”,不需要更新
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验一总结

现象:
1.通过上面运行过程可以发现任务在运行48秒时候,入库速率为711条/秒,到44分钟时,入库速率为116条/每秒
2.监控数据库会话发现该任务一直在执行select语句,而且是单条记录查询
3.在经过44分钟还没有完成数据入库
分析:
通过运行过程中可以看出使用“插入/更新”组件时,该功能会对每天数据在数据库里先查询(select)一下确认是否有存在的然后插入,经过两个步骤才能插入一条数据,随着表的数据量增多,查询就会越来越慢,入库效率也就很慢,导致从过程中看到刚开始插入效率还可以,在过了几十分钟后就急剧下降。
结论:“插入/更新”组件不适用于大批量数据入库场景;
“插入/更新”组件会在数据库中执行两步操作,第一步Select,第二步insert或update
“插入/更新”组件会随着表的数据量增大而效率变得越来越慢

实验二:使用文本文件组件作为输入,输出使用“表输出”组件

输入组件同第一种方法配置

(1)表输出组件的配置
在这里插入图片描述
观察数据库运行情况
在这里插入图片描述
在这里插入图片描述

实验二总结

     通过上图可以看出745万的数据在59秒就可以入库,速率在125337条/秒。
     现象:1.表输出方式速度非常高,每秒入库速度在10多万条记录
          2.通过数据库观察表输出方式是批量入库,没有经过select操作直接入库
     结论:1、表输出方式入库效率高,适用于大批量数据入库
           2.在数据库层面也是批量提交,不做数据重复校验。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值