如何从java将数据库连接传递给Kettle作业

Posted

技术标签:

【中文标题】如何从java将数据库连接传递给Kettle作业【英文标题】:How to pass database connection to Kettle job from java 【发布时间】:2014-04-15 06:29:18 【问题描述】:

我有一个 Kettle 作业,它将从数据库 X 获取数据并将数据复制到另一个数据库 Y。

我使用了一些 Kettle jars 从 java 运行这项工作,并且工作正常。

现在,我的要求是,如何将数据库名称从 java 动态传递给作业?

例子:

String filename = "myJob.kjb";
KettleEnvironment.init();
JobMeta jobMeta = new JobMeta(filename, null);
jobMeta.setParameterValue("TEST_DB", "MyDatabase");
jobMeta.setInternalKettleVariables();
Job job = new Job(null, jobMeta);
job.start();
job.waitUntilFinished();

【问题讨论】:

【参考方案1】:

你尝试过 jobMeta.activateParameters() 吗?

【讨论】:

【参考方案2】:

似乎jobMeta.activateParameters() 似乎不起作用,动态传递连接所需的一切,但是作业步骤未选择参数化名称,如下所示:

<connection>$kettle.db.connection.name</connection>

【讨论】:

【参考方案3】:

您不需要动态传递数据库名称使用通用连接将所有数据库连接属性动态传递给水壶作业。

【讨论】:

以上是关于如何从java将数据库连接传递给Kettle作业的主要内容,如果未能解决你的问题,请参考以下文章

java调用kettle文件需要哪些参数

Kettle通用数据贴源作业设计

Pentaho Kettle - 在不停止作业的情况下运行检查数据库连接

kettle作业 循环执行并行执行作业

KETTLE实现邮件告警

从 Pentaho Kettle Job 的 java api 调用中获取数据