需要在camel Talend

时间:2016-11-01 23:58:57

标签: java sql apache-camel talend

我正在使用使用骆驼的Talend ESB。 我的要求是我需要批量插入表中,并且必须动态地为不同类型的输入创建查询。

如果我创建一个上下文说extVar并将其默认为 “插入table_foo(foo,bar)值(:#foo,:#bar)” 然后使用带有以下代码的cMessagingEndpoint组件 “SQL” + context.extVar + “批次=真安培;展现dataSource = MySQL的” 它工作正常。

在Talend中,我能够访问cProcessor中的context.extVar,所以我尝试从那里动态加载查询,但我不能。

由于我使用的是命名参数,我假设我既不能使用body进行查询,也不能在cMessageEndPoint的sql语句中获取属性/头值。

有没有办法可以将查询动态填充到cMessageEndPoint的sql语句中。

1 个答案:

答案 0 :(得分:3)

我能够解决我的问题。感谢this answer。我的目标是有一个动态批量插入查询,使用cRecipientList,我能够实现它。我还能够读取上下文变量并在cRecipientList的Expression中使用,同时从cProcessor动态加载。

enter image description here

<强>更新 我刚刚发现你也可以使用.toD(可从camel版本2.16获得)在查询中使用简单的表达式语言。 例如:你可以写,

.toD("sql:${property.query}?dataSource=ds_dwh_d&batch=true")