Разделение строки с разделителями-запятыми и сохранение в базу данных без DataWeave в Mule

Единственная моя проблема со многими инструментами заключается в том, что сложные вещи становятся легкими, а простые вещи становятся трудными. Я в настоящее время застрял с такой проблемой.

Я использую версию сообщества Mule. Эта версия не включает функцию DataWeave (ранее DataMapper).

Есть ли простой способ написать поток, который разбивает строку, разделенную запятыми, на значения и сохраняет их в таблице в базе данных?


person Jack    schedule 10.03.2016    source источник


Ответы (2)


Попробуйте приведенную ниже конфигурацию потока, в основном вы используете 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: ВСТАВИТЬ В таблицу (поле_a) ЗНАЧЕНИЯ (один); org.mule.api.processor.LoggerMessageProcessor: ВСТАВИТЬ В БД org.mule.api.processor.LoggerMessageProcessor: ВСТАВИТЬ В таблицу (field_a) VALUES (два); org.mule.api.processor.LoggerMessageProcessor: ВСТАВИТЬ В БД org.mule.api.processor.LoggerMessageProcessor: ВСТАВИТЬ В таблицу (field_a) VALUES (три); org.mule.api.processor.LoggerMessageProcessor: ВСТАВИТЬ В БД org.mule.api.processor.LoggerMessageProcessor: ВСТАВИТЬ В таблицу (field_a) VALUES (четыре); org.mule.api.processor.LoggerMessageProcessor: ВСТАВИТЬ В БД

person John Anthony    schedule 10.03.2016

Лучший способ:
После всех испытаний я обнаружил, что это преобразование данных работает отлично без какого-либо разделения данных или какой-либо двусмысленности.

Убедитесь, что в формате JSON указана кодировка UTF-8. \n

Выше используются версии Mule 3.8 и anypoint 6.0.

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

---
payload

Это отлично работает без какого-либо сопоставления, которое вы могли бы напрямую сопоставить, просто указав полезную нагрузку

person Sravan Yadav Lingam    schedule 12.07.2017