博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程聊微服务-数据抽取那点事(二)
阅读量:6372 次
发布时间:2019-06-23

本文共 1106 字,大约阅读时间需要 3 分钟。

一、什么是ETL

ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,这里介绍一个ETL工具Kettle,这个工具很强大,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现。

二、Kettle概念

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

Kettle可以在网站下载。

三、Kettle的使用

要实现实时的增量更新共有两种方法:

1、通过触发器。

在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时 表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除。触发器方式的优点是数据抽取的性能较高,缺点是要求业务表建立触发器,对业务系统有 一定的影响。

2.通过时间戳。

可以在两边数据库的表里插入了一列(用来取数据变动时的时间),然后做个计划任务,设置每隔多少时间跑一次kettle,就行了。要实现“实时”,就只能把时间间隔设小一点。

  • 通过时间戳方式

利用kettle工具,通过时间戳完成某表实时的增量更新。

利用模块完成即可,如下简图:

image.png

准备一个实验环境:

准备基本完成如下效果:
select t.*, t.rowid from EMP_ETL t

image.png

编写时间戳ktr转换过程,把原表中最大的hiredate作为变量,如下图:

image.png

下面在“表输入”环节中,使用传递过来的${MAXSJ}作为条件,完成向目标表插入数据,简要流程如下:

image.png

执行转换,完成数据插入,简图如下:

image.png

最后利用kettle形成的整体数据流如下图所示:

image.png

下一篇文章,我将重点介绍基于Oracle的双活方案

转载地址:http://voyqa.baihongyu.com/

你可能感兴趣的文章
PHP哈希表碰撞攻击
查看>>
linux根目录下文件夹概览
查看>>
数字在排序数组中出现的次数
查看>>
Scramble String -- LeetCode
查看>>
VS调试快捷键
查看>>
算法-KMP串匹配
查看>>
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
查看>>
JavaScript引用类型之Array数组的排序方法
查看>>
【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
查看>>
websoket使用Protocol Buffers3.0传输
查看>>
tcp ip协议笔记(1)——简单介绍
查看>>
memcached优化方法
查看>>
FreeMarker使用小记(HelloWorld)
查看>>
git-ssh 配置和使用
查看>>
Collections of Zujin Zhang's Published works
查看>>
java异步编程
查看>>
批处理将文件夹下的文件名称写入到一个文本里
查看>>
rand7生成rand10,rand1生成rand6,rand2生成rand5(包含了rand2生成rand3)
查看>>
android studio eclipse keymap theme 快捷键 主题风格设置
查看>>
Hello Socket - 第一个Socket程序
查看>>