Kettle入门之五 Kettle应用场景(增量插入和更新)


在此,我们主要对示例3进行说明。

为方便演示,我们在数据库A和数据库B中分别创建表userA和表userB。最终目标为将数据表userA中的数据插入到数据表userB中。

create database testA;
use testA;
create table `userA`(
    `id`int(10) primary key,
    `name` varchar(50),
    `age` int(3)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into userA values(1,'张三',20);
insert into userA values(2,'李四',21);
insert into userA values(3,'王五',22);

create database testB;
use testB;
create table `userB`(
    `idB`int(10) primary key,
    `nameB` varchar(50),
    `ageB` int(3)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

操作步骤

1、运行软件,进入主界面。点击左上角的 文件 → 新建 → 转换新建一个转换,并保存,转换的后缀名为ktr。

2、点击面板左侧的 主对象树 ,选择 DB连接 右键,选择 新建 或 新建数据库连接向导 分别创建对数据库A和数据库B的连接。

注意: 如果在点击测试连接时出现下图所示错误,检查我们的安装目录下的lib中是否有对应数据库连接的jar包文件(如mysql的jar文件:mysql-connector-java-5.1.6-bin.jar),下载对应的jar,放到lib文件夹下,重启kettle软件,即可。

点击面板左侧的 核心对象 ,选择 输入文件夹下的 表输入 并把它拖到右侧的编辑区中

4、双击编辑区的“表输入”图标,编辑数据输入源。

5、点击面板左侧的 核心对象 ,选择 输出文件夹下的 插入/更新 并把它拖到右侧的编辑区中,按住 shift 画线连接 “表输入”。

6、双击编辑区的“插入/更新”图标,编辑控件内容。

用来查询的关键字,此处只选择主键id,表示这里按照id查询,如果此id存在,则更新数据,若不存在则插入数据。

7、到这里,我们最简单的一个插入/更新数据的转换已经建立完成了,点击“校验这个转换”,Kettle会校验并给出简单的报告。没有任何问题。

8、点击“运行这个转换”,选择“本地执行”,点击“启动”来执行这个转换。

9、转换成功后,我们可以在控制台中看到如下信息。检查本地数据库,数据库A的userA表中的数据已经全部被插入更新到了数据库B的userB表中。

注:此示例适用于插入和更新目标源数据,无法将已经源表中的删除的记录同步到目标表中

至此,Kettle的更新插入就基本完成了


上一章:Kettle入门之四 Kettle定时任务(GUI)https://blog.csdn.net/qq_43015592/article/details/107469813 

下一章:Kettle进阶之一 通过接口API链接取到本地数据库https://blog.csdn.net/qq_43015592/article/details/107492562

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于Kettle增量更新,可以按照以下步骤进行操作: 1. 首先,需要获取目标表中的最大时间戳。可以使用表输入组件执行SQL语句,通过查询目标表的最大更新时间来获取。如果目标表为空,需要设置一个默认的起始时间戳或者先进行全量同步。 2. 接下来,使用表输入组件获取源头表中的增量数据。通过查询源头表中更新时间大于目标表最大时间戳的数据来实现。可以使用上一步获取到的最大时间戳作为查询条件,只取时间戳之后的数据。 3. 将获取到的增量数据插入更新到目标表中。可以使用插入更新组件来实现这一步。此步骤将增量数据逐条插入更新到目标表中。 需要注意的是,如果在插入更新过程中出现了主键冲突,可能是因为没有进行正确的排序,导致合并记录组件里的比对数据出现重复。所以在操作时,需要确保数据的排序以避免主键冲突的问题。可以参考引用中的说明来进行具体操作。 最后,可以将增量更新操作设置为定时任务,以定期执行增量更新的过程,确保数据的同步和更新。 适应数据结构具有时间戳字段和数据记录不会删除的设计思路 关于Kettle增量更新中主键冲突问题的说明<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [kettle基础入门(四)kettle增量更新](https://blog.csdn.net/youniubi/article/details/115328522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [使用kettle实现增量更新](https://blog.csdn.net/qq_40877166/article/details/107716595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值