利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)

一般在项目里,我们难免会遇到不同数据库间的数据迁移,或者是不同数据库之间的数据同步对接。而kettle软件作为第三方软件可以很好的实现对接。
由于本人也是刚刚使用这个软件,所以在这里分享几个简单的数据对接案例。
一、步骤准备

  1. 安装mysql数据库
  2. 安装Oracle数据库
  3. 下载pdi-ce-5.4.0.1-130,并且打开data-integration底下的spoon即可打开软件

二、简单入门(例子1:简单实现同一个数据库的不同表数据同步)

  1. 新建转换
    在这里插入图片描述
  2. 修改转换名称及备注
    在这里插入图片描述
    在这里插入图片描述
  3. 添加数据库
    双击DB连接,填写配置信息,然后点击测试,如果显示连接成功即可。如果需要共享数据库,可以点击连接的数据库,右键,共享即可(共享需要重启kettle才可以实现)。
    在这里插入图片描述
  4. 添加步骤
    该例子主要实现oracle数据库的一个表数据转移到另一个表,如果两个表字段不同,可以通过映射字段转移!!
    主要的步骤包括:1.读取表数据-。2.插入表数据。首先找到核心对象–》输入–》表输入,然后鼠标左键将表输入拖入右边白色区域,如下图
    在这里插入图片描述
    同理,将输出–》插入/更新拖到右边白色步骤,并且按住shift,左键从“表输出”拖动到“插入/更新”即可建立关系,如果想要取消关联运行,再点击一次使黑色箭头线变成灰色即可,或者也可以直接右键-删除。如下图所示:在这里插入图片描述
  5. 编写步骤逻辑
    双击“表输入”,填入相关逻辑,也可以自定义步骤名称。填写完可以测试下是否能够读取到想要的数据、
    在这里插入图片描述
    然后双击“插入/更新”,填入相关逻辑。
    在这里插入图片描述
    需要注意的是,这个地方的“用来查询的关键字”,可以理解为更新条件。以我上图的为例,当oracle_to_mysql表的数据的id在kettle_test存在时,则这条记录就会被更新,不存在则进行新增。
  6. 执行
    点击上方的三角符号即可进行转换。
    在这里插入图片描述

三、实现定时功能(在上一个例子的基础上深入)

  1. 实现删除同步
    在上一个例子中,我们实现了数据同步。但是经过测试,我发现这个同步只能实现增加数据的同步,如果输入表的数据被删除,更新表却不会实现同步删除。所以,这里需要加一个“执行sql脚本”实现删除的同步,如下图在这里插入图片描述

  2. 使用定时器进行同步
    当然,在实际项目中,如果我们接数据不可能一直手动操作,肯定需要设立定时器定时接受数据,所以我们可以设立一个定时器。
    首先新建一个作业在这里插入图片描述
    然后在通用里将“start”和“转换”拖到右边空白处并且连接起来
    在这里插入图片描述
    给“start”定时,为了方便查看,我这里定时3秒为一次执行动作
    在这里插入图片描述
    然后再赋予“转换”事件,这个事件1就是我前面同步事件
    在这里插入图片描述
    然后点击上方的三角执行即可!!!

  3. 利用.bat文件在程序外启动定时器
    由于我们在数据同步接受的时候,不可能一直开着软件接收数据,所以可以考虑弄一个批处理文件进行定时器启动。而kettle提供了kitchen.bat启动定时器文件。所以,我们只要新建一个.bat文件,然后切换目录到kitchen.bat文件底下,调用kitchen.bat即可,如下所示:

d: 
cd D:\kettle\pdi-ce-5.4.0.1-130\data-integration
kitchen /file:D:\kettle\workspace\job1.kjb

由于这将会启动一个doc串口,如果想要隐藏窗口可以在.bat文件头部加入以下代码即可:

@echo off
 
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
::

如下图所示
在这里插入图片描述
四、实现oracle同步到mysql表(在上一个例子的基础上深入)

  1. 添加mysql数据库
    跟oracle一样,双击DB连接,然后配置相关信息,如下图:在这里插入图片描述
  2. 创建新的“插入/更新”
    这里如果需要将oracle表数据同步到mysql表数据,只需将oracle的“插入/更新”替换为mysql的即可。
    在这里插入图片描述
    在这里插入图片描述
    然后点上方三角运行即可!!!

五、 关于表输出的使用
通过使用,我发现好像有kettle有三种表述出方式,分别是:
插入/更新、表述出、sql脚本关系。
当然,他们之间还是有一定区别的,就目前使用经验,本人稍微总结了一点使用区别。

  1. 插入/更新(这里就不截图了,前面有介绍):
    1.1. 不执行任何更新:如果被选择,则不执行任何更新,只允许插入。
    1.2. 用来查询的关键字:可以通过定义关键字来决定插入或者更新
    1.3. 更新:可以指定那些字段不进行更新。

  2. 表输出:没有更新操作,如下图
    在这里插入图片描述

  3. sql脚本
    就是自定义sql进行实现sql操作,比其他两个灵活。如下图:
    在这里插入图片描述

完整例子看分享2!!!!

1、ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以掌握一个ETL工具的使用,必不可少。Kettle作为ETL工具是非常强大和方便的。Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。2、Clickhouse 是俄罗斯的“百度”Yandex公司在2016年开源的,一款针对大数据实时分析的高性能分布式数据库,与之对应的有hadoop生态hive,Vertica和百度出品的palo。这是战斗民族继nginx后,又开源的一款“核武器”。Hadoop 生态体系解决了大数据界的大部分问题,当然其也存在缺点。Hadoop 体系的最大短板在于数据处理时效性。基于 Hadoop 生态的数据处理场景大部分对时效要求不高,按照传统的做法一般是 T + 1 的数据时效。即 Trade + 1,数据产出在交易日 + 1 天。ClickHouse 的产生就是为了解决大数据量处理的时效性。独立于Hadoop生态圈。3、Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。 Superset 的前端主要用到了 React 和 NVD3/D3,而后端则基于 Python 的 Flask 框架和 Pandas、SQLAlchemy 等依赖库,主要提供了这几方面的功能:01、集成数据查询功能,支持多种数据库包括 MySQL、PostgresSQL、Oracle、SQL Server、SQLite、SparkSQL 等,并深度支持 Druid。02、通过 NVD3/D3 预定义了多种可视化图表,满足大部分的数据展示功能。如果还有其他需求,也可以自开发更多的图表类型,或者嵌入其他的 JavaScript 图表库(如 HighCharts、ECharts)。03、提供细粒度安全模型,可以在功能层面和数据层面进行访问控制。支持多种鉴权方式(如数据库、OpenID、LDAP、OAuth、REMOTE_USER 等)。 基于Kettle+Clickhouse+Superset构建亿级大数据实时分析平台课程将联合这三大开源工具,实现一个强大的实时分析平台。该系统以热门的互联网电商实际业务应用场景为案例讲解,对电商数据的常见实战指标处理使用kettle等工具进行了详尽讲解,具体指标包括:流量分析、新增用户分析、活跃用户分析订单分析、团购分析。能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。项目代码也是具有很高的商业价值的,大家可以根据自己的业务进行修改,便可以使用。本课程包含的技术:开发工具为:IDEAKettleClickhouseSupersetBinlogCanalKafkaHbaseHadoopZookeeperFlinkSpringBootSpringCouldPythonAnconaMySQL等 课程亮点:1.与企业对接、真实工业界产品2.强大的ETL工具Kettle全流程讲解实现3.ClickHouse高性能列式存储数据库4.Superset现代化的企业级BI可视化5.数据库实时同步解决方案6.集成Flink实时数据转换解决方案7.主流微服务SpringBoot后端系统8.互联网大数据企业热门技术栈9.支持海量数据的实时分析10.支持全端实时数据分析11.全程代码实操,提供全部代码和资料12.提供答疑和提供企业技术方案咨询 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值