简单记录一下springboot引用kettle对接数据
第一步(这一步讲述了下载kettle、创建数据库连接、转换等,如果这一步会的可以略过,直接看第二步)
先从kettle官网下载kettle,官网地址:https://sourceforge.net/projects/pentaho/
进入官网后点击files,选择需要的版本进行下载

下载完成后是一个压缩包,免安装的,选择一个路径,将压缩包解压,解压后进入到data-integration目录,该目录下有一个Spoon.bat文件,双击即可运行

打开后界面是这样的

然后选择依次点击文件->新建->转换就可以编辑对接数据的逻辑了

在编辑对接程序之前,是需要先设置一下数据库信息的,在这里说明一下,新解压的kettle没有oracle的驱动,需要手动的下载一个ojdbc的jar包放到\data-integration\lib目录下,否则测试连接的时候会报错(以oracle的为例,如果是其他数据库请忽略这一步,直接看下边)

放好以后,需要关掉kettle重启一下才行,我这里放的是ojdbc7,至于其他类型的数据库我还没有测试,不知道是不是也会出现这种情况,如果也出现这种情况的话,就下载一个相对应的驱动,放到data-integration\lib目录下就行
接下来就是在新建的转换当中选择工具->向导->创建数据库连接向导(这一步可以将要读取的数据库和要写入的数据库都配置好,这样在编写对接逻辑的时候就不用在返回来重做这一步了)

根据向导,选择要读取的数据库或者写入的数据库类型,给连接起个名字,点击next

然后是配置数据库信息,服务器主机名称就是ip地址,tcp/ip端口就是数据库的端口,例如oracle的就是1521,数据库名称就是数据库的连接符,例如oracle的orcl,填好后继续点击next

然后会出现让选择数据表空间和索引表空间的步骤,这一步可以选择不填,继续点击next,就到了最后一步,在这里填入数据库的账号密码,点击测试数据库连接

如果创建好数据库连接,想要全局使用的话,还得有一步设置,如果不设置的话,每新建一个转换,就得重复的创建数据库连接
创建好数据库连接后依次点击左侧窗口的主对象树->转换->test(新创建的转换)->DB连接,然后右键创建好的数据库连接,点击共享即可

编辑好数据库后,接下来就是编辑对接逻辑了,这里就先简单的写个步骤,复杂的需要自己慢慢体会
首先在窗口的左侧核心对象下,从输入标签中找到表输入,双击或者拖拽都行,拖拽的话是往右侧转换里拖拽,这个表输入就是要读取的数据,然后关闭输入标签,或者向下滑动,找到输出标签,从输出标签中找到插入/更新,同样以双击或拖拽的方式加入到转换里,这个是要写入的数据,然后按住shift键,先点击表输入,再点击插入/更新,这样这个节点就创建好了

创建好节点连接后,就需要编辑表输入和插入/更新了,表输入就是要读取的数据,插入/更新就是要写入的数据,双击表输入

双击更新/插入

当这两个编辑好后,保存一下,就会生成一个ktr文件。
至此,在可视化界面中创建ktr文件的步骤就完成了
第二步,将生成的ktr文件集成到springboot里面
首先需要注意的是,相关依赖一定要引用全了,不然运行时会出现很多异常,我就是这样,公司同时给的代码,在他那里可以运行,到我这里以后就各种异常往外报,耗费一天的时间,终于可以进行数据对接了,下面记录一下需要引入的依赖
<!--kettle相关依赖-->
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-core</artifactId>
<version>9.0.0.3-582</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-engine</artifactId>
<version>9.0.0.3-582</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-dbdialog</artifactId>
<version>9.0.0.3-582</version>
</dependency>
<!--以上三个是最主要的依赖,相关jar包可以从kettle官网下载的下来的工具里面找,
具体路径是:\kettle\data-integration\lib\下面,版本就对应上下载的工具版本就行,
下面的是其他一些相关引用
-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
</dependency>
<dependency>
<groupId>pentaho</groupId>
<artifactId>metastore</artifactId>
<version>9.1.0.6-517</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-vfs2</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<!--kettle相关依赖-->
至于对接的代码就比较简单了,网上到处都有,这里我也记录一下吧
try {
//初始化kettle
//如果初始化失败,当加载完ktr文件后,会报database type with plugin id [Oracle] couldn't be found!
KettleEnvironment.init();
} catch (KettleException e1) {
e1.printStackTrace();
}try {
//加载kettle的ktr文件
//String url=this.getClass().getClassLoader().getResource("test.ktr").getPath();
//这里有个坑,就是打成jar包以后,读取不到ktr文件,就会报XXX.ktr is invalid,经过百度发现,要想读取到文件,必须使用流去进行读取,所以进行了修改,这样无论是本地跑还是打成jar包跑都可以
InputStream url = this.getClass().getClassLoader().getResourceAsStream("ktr/" + fileName);
System.out.println("########################"+url);
TransMeta transMeta = new TransMeta(url, null, true, null, null);
transMeta.setLogLevel(LogLevel.DEBUG);
Trans trans = new Trans(transMeta);
trans.prepareExecution(null);
trans.startThreads();
trans.waitUntilFinished();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
总结:其实kettle集成到springboot里面没有多少代码,这个功能最主要的还是ktr文件的编写,只要ktr编写好了,放到指定文件夹下,写个定时任务就完事了,如果以上内容有什么不对的地方,还望各路大神指出,我加以修正
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我一直很高兴地使用DelayedJob习惯用法:foo.send_later(:bar)这会调用DelayedJob进程中对象foo的方法bar。我一直在使用DaemonSpawn在我的服务器上启动DelayedJob进程。但是...如果foo抛出异常,Hoptoad不会捕获它。这是任何这些包中的错误...还是我需要更改某些配置...或者我是否需要在DS或DJ中插入一些异常处理来调用Hoptoad通知程序?回应下面的第一条评论。classDelayedJobWorker 最佳答案 尝试monkeypatchingDelayed::W
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co