我对许多工具的关注是,困难的事情变得容易,但容易的事情变得困难。我目前遇到了这样的问题。
我正在使用社区版的Mule。此版本不包含DataWeave(以前是DataMapper)功能。
是否有一种简单的方法来编写将逗号分隔的字符串拆分为值并将其保存到数据库中的表中的流程?
答案 0 :(得分:1)
尝试下面的流配置,基本上你使用MEL和拆分字符串,拆分后的有效负载将是一个集合,然后只需使用集合拆分器或在本例中为foreach,然后只需将数据库出站连接器并构造插入sql声明,因为您没有数据编织或数据映射器,您可以利用数据感知。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="sampleFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/inbound" doc:name="Inbound HTTP"/>
<set-payload value="one,two,three,four" doc:name="Set Sample Payload"/>
<expression-transformer expression="#[message.payload.split(",")]" doc:name="Split String"/>
<foreach collection="#[payload]" doc:name="For Each">
<logger message="INSERT INTO table(field_a) VALUES(#[payload]);" level="INFO" doc:name="SQL INSERT"/>
<logger message="INSERT TO DB" level="INFO" doc:name="YOUR DATABASE CONNECTOR"/>
</foreach>
</flow>
</mule>
LOG OUTPUT
org.mule.api.processor.LoggerMessageProcessor:INSERT INTO table(field_a)VALUES(一个); org.mule.api.processor.LoggerMessageProcessor:INSERT TO DB org.mule.api.processor.LoggerMessageProcessor:INSERT INTO table(field_a)VALUES(两个); org.mule.api.processor.LoggerMessageProcessor:INSERT TO DB org.mule.api.processor.LoggerMessageProcessor:INSERT INTO table(field_a)VALUES(三); org.mule.api.processor.LoggerMessageProcessor:INSERT TO DB org.mule.api.processor.LoggerMessageProcessor:INSERT INTO table(field_a)VALUES(四个); org.mule.api.processor.LoggerMessageProcessor:INSERT TO DB
答案 1 :(得分:0)
最好的方式是 在所有试验之后,我发现这种数据编织转换工作没有任何数据分裂或任何歧义。
确保以JSON格式提及UTF-8编码。 \ n
以上是使用Mule 3.8和anypoint 6.0版本
%dw 1.0
%output application/csv quoteValues=true,separator="|~" ,header=true ,escape="\""
---
payload
这样可以正常工作,没有任何映射,只需指定有效负载
即可直接映射