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

时间:2014-04-15 06:29:19

标签: java pentaho

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

我使用了一些Kettle罐子从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();

3 个答案:

答案 0 :(得分:0)

您是否尝试过jobMeta.activateParameters()?

答案 1 :(得分:0)

似乎import json categories = [] #input def transform(category, child_node_id): category['subcats'].append({ 'id': child_node_id, 'name': 'cat%s' % child_node_id, 'parent_id': category['id'] }) for category in categories: category['subcats'] = [] [transform(category, child_node_id) for child_node_id in category['path_info']] category.pop('path_info', None) print(json.dumps(categories, indent=4)) 似乎不起作用,动态传递连接所需的全部内容,但是作业步骤不会选择参数化名称,如下所示:

jobMeta.activateParameters()

答案 2 :(得分:0)

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