在 Mule 中管理和操作大型 sql 查询的最佳方式

Best way to manage and manipulate large sql queries in Mule

我需要 运行 在 mule 中进行大型 sql 查询,但查询会根据有效负载而变化。我必须根据有效负载修改列名、位置和分组条件等。

目前我在资源文件夹中放置了一个模板查询,比如 test.sql。在查询中,我放置了一些要替换的关键字,如 "replaceColumn"。我使用一个设置变量组件将该关键字替换为必需的关键字,如 "Field1Column"

变量:formQuery

%dw 2.0
output application/java
var query = readUrl('classpath://test.sql','text/plain')
---
query replace "replaceColumn" with payload.Field1Column

在 DB select 组件中我简单地输入了#[vars.formQuery]

这个解决方案对我有用,但很难通过嵌套替换运算符来替换查询的许多部分。

有什么好的方法吗?

您可以使用 key/values 根据地图执行此递归替换,如此处所述 https://simpleflatservice.com/mule4/RecursiveReplaceByMap.html

%dw 2.0
var x="The quick brown fox jumps over the lazy dog"
var myMap={fox:'chicken', dog:"me"}
var keys=myMap pluck ($$)
fun changeMe ( value, index ) = 
  if ( index < sizeOf(keys)  ) 
  changeMe( (value replace ( keys[index] ) with ( myMap[keys[index]] ) ) , index+1 ) 
  else value
output application/json
---
changeMe(x,0)

输出

"The quick brown chicken jumps over the lazy me"