首页 > 其他分享 >kettle从入门到精通 第四十一课 kettle 事务(单个转换文件)

kettle从入门到精通 第四十一课 kettle 事务(单个转换文件)

时间:2024-02-04 20:12:00浏览次数:22  
标签:事务 入门 写入 kettle t2 t1 第四十一 步骤 name

1、大家都知道,我们在平常写java或者C#等代码时,如果涉及操作多个表时为了保持数据一致性需要开启事务,同样kettle也支持事务,今天我们一起来学习下kettle 单个转换文件内的事务特性。

转换文件中的步骤是并行执行的,每个步骤都打开一个独立的数据库连接并开始一个事务。尽管这样在很多情况下会提高性能,但当不同步骤更新同一个表时,也会带来锁和参照完整性问题。

为解决打开多个连接而产生的问题,Kettle可以在一个事务中完成转换。转换设置对话框的杂项“使用唯一连接”,可以完成此功能。当选中了这个选项,所有步骤里的数据库连接都使用同一个数据库连接。只有所有步骤都正确,转换正确执行,才提交事务,否则回滚事务。

有如下t1和t2 两个表,两个表的name字段长度不一样,其他字段一致。

 

CREATE TABLE `t1` (
   `id` bigint not NULL primary key auto_increment,
   `name` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
   `createtime` datetime DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

  

 CREATE TABLE `t2` (
    `id` bigint not NULL primary key auto_increment,
   `name` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
   `createtime` datetime DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

2、通过生成记录步骤生成一条数据,通过复制的方法同时写入t1和t2 两个表,t1写入和t2写入是两个执行sql语句步骤,如下图所示。

 3、生成记录步骤比较简单,一般在测试一些转换的时候可以使用此步骤生产数据。

限制:可以设置产生数据条数。这里设置1条数据。

示例数据:name字段,类型为String,默认值为Java小金刚。

 4、t1写入步骤和t2写入步骤,脚本逻辑一致,只是表名不一样。这里通过?占位符可以把name字段值赋值为?。

 5、当name=Java小金刚时,t1和t2写入成功,因为字段name的长度符合表中name字段长度要求。

 6、 当name=超级无敌Java小金刚,且不开始事务的情况下时,t1写入失败,t2写入成功,因为字段name的长度不符合t1表中name字段长度,字段name的长度不符合t2表中name字段长度。此种情况下每个步骤单独开启一个事务。

7、 当name=超级无敌Java小金刚,且开始事务的情况下时,t1写入失败,t2写入失败。此种情况下两个步骤共享一个事务。

 

 8、 当name=Java小金刚,且开始事务的情况下时,t1写入成功,t2写入成功。此种情况下两个步骤共享一个事务。

 

标签:事务,入门,写入,kettle,t2,t1,第四十一,步骤,name
From: https://www.cnblogs.com/zjBoy/p/18004107

相关文章

  • RabbitMQ快速入门
    MQ的基本概念MQ概述MQ全称MessageQueue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。MQ,消息队列,存储消息的中间件分布式系统通信两种方式:直接远程调用和借助第三方完成间接通信发送方称为生产者,接收方称为消费者MQ的优势和劣势优......
  • kettle从入门到精通 第三十九课 kettle 增量同步(日级)
     1、上一课我们学习了在数据量大的情况下的分页全量同步示例,本次我们一起学习下kettle增量全量同步。有些业务场景不需要实时数据,比如统计t-1日的销售业绩情况等。  2、kettle增量全量同步示例依然基于test数据库,从t1表增量同步数据到t2表,假定每天0点跑批将t1表中的t-1日......
  • 在idea打包普通项目jar包(入门级含依赖)
    在idea打包普通项目(含依赖)准备一个Mian主方法和数学工具类用来测试,还有一个演示用的依赖jar包第一步选择file下的projectstructure第二步选择具有依赖的打包方式 第三步选择要打包的模块和主函数第四步添加项目依赖的jar包最后点击apply第五步打包测试......
  • iText PDF Java API 入门介绍教程
    ​ iText是一个非常强大的Java库,用于创建和操作PDF文档。可以在Java应用程序中生成PDF文档,包括文本、表格、图像等丰富的内容。iText具有强大的功能,如PDF/A、数字签名、加密等,适用于复杂的PDF处理需求。iText是一个非常灵活和强大的库,可以根据具体需求进行大量的定制和扩展。......
  • 零基础入门Vue之皇帝的新衣——样式绑定
    回顾大致掌握了上一节的插值语法我已经可以把想要的数据显示到页面上,并且仅需要修改变量,页面就会跟着实时改变但如果对于已经熟悉前端的人来说,单单有数据还是不太行,还需要css对数据进行样式的修饰,让页面更加好看所本篇将记录记录Class与Style绑定的学习总所周知,想要给D......
  • macOS 使用 x86_64 终端打开 Kettle
    苹果于2020年推出了自家设计的基于ARM架构的M1芯片,在日常生活的大部分使用过程中,M1的体验很好。然而,依然存在一小部分软件无法兼容ARM架构,需要我们模拟x86的架构来运行。其中一个例子是Kettle(又称PDI)。笔者当年使用Kettle时无法直接双击打开,为了打开Kettle,我们需......
  • Vue入门
     CDN引入vuevue常用指令v-for 循环渲染语法:v-for="(item,index)initems"items:遍历的数组item:遍历出来的元素index:索引下标v-bind 动态绑定作用:为空间动态绑定属性值,href,css,etc语法:v-bind:属性名=“属性值”简化::属性名=“属性值” v-if   v-sho......
  • [tornado]入门tornado(1): 项目结构
    学习资料tornado-bolierplate据说是一个适合新手入门的项目,但是已经是14年前的项目了,使用的tornado版本是3.2(而现在tornado已经到6.4了),所以这个项目对我来说更多是学习工作流程以及项目结构iwokhblog以及这一篇2020年的博客,时间稍微近一点本文主要是搞清楚一个torna......
  • Python小白入门指南:从零开始掌握Python编程
    你是否曾想过用代码操控电脑、制作自动化任务,或者探索数据的奥秘?今天,我要带你进入Python的世界,为你揭开编程的神秘面纱。不论你是编程零基础,还是想学习一门新技能,这篇文章都将是你学习Python的得力助手。一、Python是什么?为什么要学Python?Python是一种高级、动态类型的编程语言,它的......
  • 一篇文章解决你的无线AP选型难题:从入门到精通
    无线网络覆盖项目中,无线AP的合理选型和部署非常重要。今天给大家安排。这篇文章,给你总结了6类典型的无线组网场所,针对每种场景的特点,给出相应的设备选型和部署的方案,同时整理了一些部署无线AP过程中容易忽略的细节,希望能给你日后组网提供一些帮助。01不同类型的AP,不同的使用环境不......