0

我对许多工具的一个担忧是,困难的事情变得容易,而简单的事情变得困难。我目前遇到这样的问题。

我正在使用 Mule 的社区版。此版本不包括 DataWeave(以前是 DataMapper)功能。

有没有一种简单的方法可以编写一个流,将逗号分隔的字符串拆分为值并将它们保存到数据库中的表中?

4

2 回答 2

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(&quot;,&quot;)]" 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>

日志输出

org.mule.api.processor.LoggerMessageProcessor: INSERT INTO table(field_a) VALUES(one); org.mule.api.processor.LoggerMessageProcessor:插入数据库 org.mule.api.processor.LoggerMessageProcessor:插入表(field_a)值(两个);org.mule.api.processor.LoggerMessageProcessor:插入数据库 org.mule.api.processor.LoggerMessageProcessor:插入表(field_a)值(三);org.mule.api.processor.LoggerMessageProcessor:插入数据库 org.mule.api.processor.LoggerMessageProcessor:插入表(field_a)值(四);org.mule.api.processor.LoggerMessageProcessor:插入数据库

于 2016-03-10T07:07:40.057 回答
0

最好的方法是
经过所有试验,我发现这种数据编织转换工作正常,没有任何数据拆分或任何歧义。

确保以 JSON 格式提及 UTF-8 编码。\n

以上使用的是 Mule 3.8 和 anypoint 6.0 版本

%dw 1.0 
%output application/csv   quoteValues=true,separator="|~" ,header=true ,escape="\""

---
payload

无需任何映射即可正常工作,您只需指定有效负载即可直接映射

于 2017-07-12T09:44:02.137 回答