在 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"
我需要 运行 在 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"