通过java程序

时间:2015-07-30 15:08:19

标签: pentaho kettle

我有一个 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文件执行时成功发生?

2 个答案:

答案 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的链接下载的。然后程序成功运行。