我有一个 Kettle(5.4.0.1)转换,它在“表输入”任务中的 MS Sql server 2008 R2 中执行查询。 该任务直接或通过Job在Spoon UI中成功执行。 我希望通过Java程序执行相同的转换,我得到了这段代码 -
KettleEnvironment.init();
TransMeta metaData = new TransMeta("first_transformation.ktr");
Trans trans = new Trans( metaData );
trans.execute( null );
trans.waitUntilFinished();
但是在java程序中执行它时我得到了这个错误 -
2015/07/30 20:08:34 - TestTransformation - 开始调度 转换[TestTransformation] 2015/07/30 20:08:34 - XML Output.0 - 以编码方式打开输出流:UTF-8 2015/07/30 20:08:34 - 表输入0 - 错误(版本5.4.0.1-130,版本1从2015-06-14_12-34-55 by buildguy):发生错误,处理将停止: 2015/07/30 20:08:34 - 表输入0 - 尝试时出错 连接到数据库2015/07/30 20:08:34 - 表输入0 - java.io.File参数必须是目录。 [C:\ Root \ EclipseWorkSpace \ TestProject \ simple-jndi] 2015/07/30 20:08:34 - 表输入.0 - 完成读取查询,关闭连接。 2015/07/30 20:08:34 - 表输入0 - 错误(版本5.4.0.1-130, build来自2015-06-14_12-34-55 by buildguy):初始化时出错 step [表格输入] 2015/07/30 20:08:34 - TestTransformation - ERROR (版本5.4.0.1-130,buildguy从2015-06-14_12-34-55构建1): Step [Table input.0]无法初始化! org.pentaho.di.core.exception.KettleException:我们失败了 初始化至少一步。执行无法开始!在 org.pentaho.di.trans.Trans.prepareExecution(Trans.java:1149)at at org.pentaho.di.trans.Trans.execute(Trans.java:607)at TestKettle.main(TestKettle.java:24)
这可能是什么问题,因为数据库连接在通过UI和我尝试在上面的代码中执行的相同KTR文件执行时成功发生?
答案 0 :(得分:0)
似乎Ktr中的表输入步骤无法读取数据。
首先,如果从Java代码调用ktr文件,请确保在Java项目中正确导入/构建数据库驱动程序jar文件。我的意思是在java项目中导入“sqlserver”数据库jar文件。
您可以尝试阅读此blog。我使用Maven来处理jar (我的db是:postgresql)的依赖。它有效:)
希望这会有所帮助:)
答案 1 :(得分:0)
对于遇到此问题的任何其他人 - 问题是Pentaho安装目录中的文件夹Simple-Jndi需要放在项目文件夹中,这在上面的错误消息中并不明显,尽管错误中提到了它。
2015/07/30 20:08:34 - Table input.0 - java.io.File parameter must be a directory. [C:\Root\EclipseWorkSpace\TestProject\simple-jndi]
在此之后,我得到了另外两个错误,这些错误更清晰,并且是关于项目文件夹中缺少的文件--ESAPI.Properties和validation.properties。我是从给定here的链接下载的。然后程序成功运行。