我有一个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();
答案 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使用通用连接将所有数据库连接属性动态传递给水壶作业。