KETTLE连接自动关闭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KETTLE连接自动关闭相关的知识,希望对你有一定的参考价值。

1:我在本地电脑上装上KETTLE,相关操作保存在数据库中,新建转换可以正常执行。
2:现在把KETTLE拷贝到服务器上,连接资源库正常,执行转换也正常,但是过个几分钟就不行了,探索资

源库提示:An error occured loading the directory tree from the repository
ERROR executing query,IO 错误: Connection reset,执行转换提示:An error occured loading the directory tree from the repository,ERROR executing query关闭的连接,连保存都提示Unable to save the

requested file,Please verify that the location is valid and you have proper permissions.
各位大神谁知道怎么解决啊,谢谢啦!

参考技术A 没遇到过这个问题,建议查看数据库用户权限 参考技术B 这个问题我现在也碰到了,楼主解决了吗?跪求答案

kettle怎样连接数据库连接

java调用kettle数据库类型资源库中的ktr此问题在1个月前或许已经接触,单是一直木有怎么用到,就被耽搁至今;问题的解决要来源于网络,其实我还想说问题的解决的是要靠我们自己的思想,不过多的言情,我们接下来直接进入主题吧!环境:kettle-spoon4.2.0,oracle11g,myeclipse6.5,sqlserver2008前提:在kettle图形界面spoon里面已经做好了一个ktr转换模型,此时我的ktr信息如下图:Step1:在myeclipse创建project,导入kettle集成所需要的包Step2:重点解析与code源码//定义ktr名字privatestaticStringtransName="test1";//初始化kettle环境KettleEnvironment.init();//创建资源库对象,此时的对象还是一个空对象KettleDatabaseRepositoryrepository=newKettleDatabaseRepository();//创建资源库数据库对象,类似我们在spoon里面创建资源库DatabaseMetadataMeta=newDatabaseMeta("enfo_bi","Oracle","Native","ip","sid","port","username","password");//资源库元对象,名称参数,id参数,描述等可以随便定义KettleDatabaseRepositoryMetakettleDatabaseMeta=newKettleDatabaseRepositoryMeta("enfo_bi","enfo_bi","kingdescription",dataMeta);//给资源库赋值repository.init(kettleDatabaseMeta);//连接资源库repository.connect("admin","admin");//根据变量查找到模型所在的目录对象RepositoryDirectoryInterfacedirectory=repository.findDirectory("/enfo_worker/wxj");//创建ktr元对象TransMetatransformationMeta=((Repository)repository).loadTransformation(transName,directory,null,true,null);//创建ktrTranstrans=newTrans(transformationMeta);//执行ktrtrans.execute(null);//等待执行完毕trans.waitUntilFinished();上面的两个步骤才可以确定是资源库中的那个路径下的ktr和我们用命令执行一样的-dir,-tran-job附上源码:packagekettle;importorg.pentaho.di.core.KettleEnvironment;importorg.pentaho.di.core.database.DatabaseMeta;importorg.pentaho.di.core.exception.KettleException;importorg.pentaho.di.repository.Repository;importorg.pentaho.di.repository.RepositoryDirectoryInterface;importorg.pentaho.di.repository.kdr.KettleDatabaseRepository;importorg.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;importorg.pentaho.di.trans.Trans;importorg.pentaho.di.trans.TransMeta;/***Title:java调用kettle4.2数据库型资料库中的转换*Description:*Copyright:Copyright()2012*/publicclassExecuteDataBaseRepTranprivatestaticStringtransName="test1";publicstaticvoidmain(String[]args)try//初始化kettle环境KettleEnvironment.init();//创建资源库对象,此时的对象还是一个空对象KettleDatabaseRepositoryrepository=newKettleDatabaseRepository();//创建资源库数据库对象,类似我们在spoon里面创建资源库DatabaseMetadataMeta=newDatabaseMeta("enfo_bi","Oracle","Native","ip","sid","port","username","password");//资源库元对象,名称参数,id参数,描述等可以随便定义KettleDatabaseRepositoryMetakettleDatabaseMeta=newKettleDatabaseRepositoryMeta("enfo_bi","enfo_bi","kingdescription",dataMeta);//给资源库赋值repository.init(kettleDatabaseMeta);//连接资源库repository.connect("admin","admin");//根据变量查找到模型所在的目录对象,此步骤很重要。RepositoryDirectoryInterfacedirectory=repository.findDirectory("/enfo_worker/wxj");//创建ktr元对象TransMetatransformationMeta=((Repository)repository).loadTransformation(transName,directory,null,true,null);//创建ktrTranstrans=newTrans(transformationMeta);//执行ktrtrans.execute(null);//等待执行完毕trans.waitUntilFinished();if(trans.getErrors()>0)System.err.println("TransformationrunFailure!");elseSystem.out.println("Transformationrunsuccessfully!");catch(KettleExceptione)e.printStackTrace(); 参考技术A 下载pdi-ce-4.4.0-stable.zip,解压到文件夹,打开data-integration中的Spoon.bat
2
出现欢迎界面后来到Repository Connection窗口,选择建立一个新的repository,随后出现“资源库信息”窗口:

在“资源库信息”窗口中选择新建一个数据库连接,弹出“Database Connection”窗口:

在其中输入Connection Name, Host Name, Database Name, Port Number, User Name,Password信息即可建立连接,完成之后在Repository Connection窗口以admin用户名登陆。
新建一个名为cscgTransTest的Transformation,从“核心对象”中将两个“表输入”和一个“插入/更新”拖入到cscgTransTest中,并建立它们之间的连接,如下图所示:

在cscgTransTest中建立一个新的数据库连接ttt,通过表输入“max_createtime”从目标数据库ttt中获取某个表中最新数据的建立时间:
SELECT max(trunc(createtime)) FROMumdata.toeventmedia
在cscgTransTest中建立一个新的数据库连接testdb,以表输入“max_createtime”的查询结果替代表输入“umdata.toeventmedia”中的变量,执行SQL语句从数据库testdb中获取需要插入或者更新到ttt数据库的数据
SELECT * FROMumdata.toeventmedia where trunc(createtime) >= trunc(?)
在“插入/更新”中选择“数据库连接”、“目标模式”、“目标表”等信息,“用来查询的关键字”中的字段用来查询某条记录是否在目标表中存在,不存在则插入记录;如果存在,则继续比较其他字段是否与流里的字段值相同,如果相同则不执行任何操作,如果不同则更新“更新字段”中所列字段。
“用来查询的关键字”所列字段是该表的primarykey,从而可以唯一标识一条记录。

分别为每一个表建立一个如上模式的转换步骤。
新建一个名为“cscgJobTest”的Job,在核心对象中将“START”和“Transformation”拖入cscgJobTest中,并建立两者之间的连接。

选中START中的“重复执行”,类型为“不需要定时”;在Transformation中将转换名设置为之前建立的“cscgTransTest”.
点击“Run this Job”运行。Job和Transformation的执行结果如如下:本回答被提问者采纳

以上是关于KETTLE连接自动关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何解决mysql数据库8小时无连接自动关闭

golang 连接、操作完mysql, 对mysql的连接会自动关闭,还是必须要手动关闭?

关闭连接会自动关闭语句和结果集吗? [复制]

使用kettle把excel文件导入到数据库时,怎么自动建立一张目标表

Laravel 会自动关闭数据库连接吗?

socket 如果不关闭会自动关闭吗?为啥要心跳连接?