需要在camel Talend中动态创建SQL语句

Har*_*i R 1 java sql apache-camel talend

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

如果我创建一个上下文说 extVar 并将其默认为“插入 table_foo (foo, bar) 值 (:#foo, :#bar)”,然后使用带有以下代码的 cMessagingEndpoint 组件“sql”+context.extVar+”?batch= true&dataSource=mysql”它工作正常。

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

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

有什么方法可以将查询动态填充到 cMessageEndPoint 的 sql 语句中。

Har*_*i R 5

我能够解决我的问题。感谢这个答案。我的目标是使用 cRecipientList 进行动态批量插入查询,我能够实现它。在从 cProcessor 动态加载时,我还能够读取上下文变量并在 cRecipientList 的表达式中使用。

在此处输入图片说明

更新: 我刚刚发现您还可以使用 .toD(可从骆驼 2.16 版获得)在查询中使用简单的表达式语言。例如:你可以写,

.toD("sql:${property.query}?dataSource=ds_dwh_d&batch=true")
Run Code Online (Sandbox Code Playgroud)