骡子 - 将字符串转换为日期

时间:2017-10-05 12:22:12

标签: mule dataweave

我有一个csv文件,如下所示:

enter image description here

我使用Dataweave将CSV文件转换为Java ArrayList后,使用For文件迭代。 现在,我需要将Date中的一个元素从String转换为 Oracle Timestamp 。请帮助你的想法。源代码如下所示:

<flow name="testFlow">
    <file:inbound-endpoint path="src/main/resources/input" 
moveToDirectory="src/main/resources/output" connector-ref="File" 
responseTimeout="10000" doc:name="File"/>
    <dw:transform-message metadata:id="4e33c7ff-c33b-4c78-be34-79a154aa16df" 
doc:name="Transform Message">
        <dw:input-payload doc:sample="sample_data\list_csv.csv"/>
        <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload]]></dw:set-payload>
    </dw:transform-message>
    <logger level="INFO" doc:name="Logger"/>
    <foreach collection="#[payload]" doc:name="For Each">
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    </foreach>
</flow>

流程设计如下所示:

enter image description here

1 个答案:

答案 0 :(得分:0)

基本上您需要做的是将日期字段(csv中的字符串)转换为日期格式。要做到这一点只提供传入数据字段的格式,它将适用于以下输入示例(csv以逗号分隔): -

foo,bar,Name,Date
foo1,baar1,Name1,15-01-2016 12:08
foo2,baar2,Name2,15-01-2016 12:08

你可以在dw下面试试: -

%dw 1.0
%output application/java
---
payload map {
    foo : $.foo,
    bar : $.bar,
    Name :  $.Name,
    Date : $.Date as :date {format: "dd-MM-yyyy hh:mm" }
}