通过 java 程序执行 pentaho 转换(与 Sql 服务器通信)时出错

Error while executing pentaho transformation (talking to Sql server) through java program

我有一个 Kettle (5.4.0.1) 转换,它在 MS Sql 服务器 2008 R2 中执行查询 [= =26=] 任务。 任务在 Spoon UI 中直接或通过 Job 成功执行。 我想通过一个 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 - Dispatching started for transformation [TestTransformation] 2015/07/30 20:08:34 - XML Output.0 - Opening output stream in encoding: UTF-8 2015/07/30 20:08:34 - Table input.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : An error occurred, processing will be stopped: 2015/07/30 20:08:34 - Table input.0 - Error occurred while trying to connect to the database 2015/07/30 20:08:34 - Table input.0 - java.io.File parameter must be a directory. [C:\Root\EclipseWorkSpace\TestProject\simple-jndi] 2015/07/30 20:08:34 - Table input.0 - Finished reading query, closing connection. 2015/07/30 20:08:34 - Table input.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : Error initializing step [Table input] 2015/07/30 20:08:34 - TestTransformation - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : Step [Table input.0] failed to initialize! org.pentaho.di.core.exception.KettleException: We failed to initialize at least one step. Execution can not begin! at org.pentaho.di.trans.Trans.prepareExecution(Trans.java:1149) at org.pentaho.di.trans.Trans.execute(Trans.java:607) at TestKettle.main(TestKettle.java:24)

通过 UI 和我试图在上面的代码中执行的同一个 KTR 文件执行时数据库连接成功发生,这可能是什么问题?

似乎Ktr中的Table Input Step无法读取数据。

首先,如果您从 Java 代码调用 ktr 文件,请确保数据库驱动程序 jar 文件正确 imported/build 在 Java 项目中。我的意思是在 java 项目中导入 "sqlserver" 数据库 jar 文件。

您可以尝试阅读这篇文章 blog。我已经使用 Maven 来处理 jars (我的数据库是:postgresql) 的依赖性。它有效:)

希望这对您有所帮助:)

对于面临此问题的任何其他人 - 问题是 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。我从 link 给定 here 下载了它们。然后程序运行成功。