首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取MOLE3.8中的纯文本文件

如何读取MOLE3.8中的纯文本文件
EN

Stack Overflow用户
提问于 2016-08-26 06:54:50
回答 4查看 4.4K关注 0票数 0

在MOLE3.8中,当我使用文件连接器处理文本文件时,我得到了下面的异常,请帮助。

以下是flow xml

代码语言:javascript
复制
file:connector name="File" autoDelete="true"  streaming="true" validateConnections="true" doc:name="File"/>

flow name="DW-FixedWidth-Processing">

file:inbound-endpoint path="D:/mule/input" connector-ref="File" responseTimeout="10000" doc:name="File"/>

file:file-to-string-transformer doc:name="File to String"/>

dw:transform-message doc:name="Transform Message">

dw:input-payload />

dw:set-payload><![CDATA[%dw 1.0
%output application/csv header=false
---
    ((payload splitBy /\n/)[0..8]) map {
    location:trim $[0..14],
    sku:trim $[15..39],
    dtc:trim $[40..42],
    tt:trim $[43..44],
    txnqty:trim $[45..54],
    um:trim $[55..56],
    rcd:trim $[57..59],
    te:trim $[60..89],
    ul:trim $[90..104],
    date:trim $[105..114],
    time:trim $[115..120]
} ]]>
dw:set-payload>

dw:transform-message>

logger message="#[message.payloadAs(java.lang.String)]" level="INFO" doc:name="Logger"/>

file:outbound-endpoint path="D:/mule/output" responseTimeout="10000" doc:name="File"/>

异常

根异常堆栈跟踪:

com.mulesoft.weave.module.flatfile.FlatFileSettings.loadSchema(FlatFileSettings.scala:45):com.mulesoft.weave.module.flatfile.FlatFileReader.ffParser(FlatFileReader.scala:42)的java.lang.IllegalStateException:没有模式设置

EN

回答 4

Stack Overflow用户

发布于 2016-08-26 09:33:25

当禁用文件连接器中的流时,不再需要

代码语言:javascript
复制
<object-to-string/>

可以将DataWeave配置为使用平面文件模式,就像在另一个答案中已经说过的那样。

当您想以这种方式使用它时,您必须告诉正确的mime类型,在本例中是这样的。

代码语言:javascript
复制
application/java

您可以在DataWeave之前的任何消息处理器上这样做,在本例中是文件:入站端点。或者您可以在DataWeave本身中这样做(不幸的是,只有当您将Studio切换到XML时才能看到这一点)。

对我来说,一切都是按照以下流程工作的:

代码语言:javascript
复制
    <file:connector name="File" autoDelete="false" streaming="false" validateConnections="true" doc:name="File"/>

    <flow name="dw-testFlow">
        <file:inbound-endpoint path="in" moveToDirectory="processed" connector-ref="File" responseTimeout="10000" mimeType="application/java" doc:name="File">
            <file:filename-regex-filter pattern=".*\.txt" caseSensitive="true"/>
        </file:inbound-endpoint>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
((payload splitBy /\n/)) map {
location:trim $[0..14],
sku:trim $[15..39],
dtc:trim $[40..42],
tt:trim $[43..44],
txnqty:trim $[45..54],
um:trim $[55..56],
rcd:trim $[57..59],
te:trim $[60..89],
ul:trim $[90..104],
date:trim $[105..114],
time:trim $[115..120]
}
]]></dw:set-payload>
        </dw:transform-message>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    </flow>

DataWeave的结果是一个HashMap列表。

票数 2
EN

Stack Overflow用户

发布于 2016-11-03 09:05:22

DW目前不支持来自非结构化字符串的映射,即使您声明MIME Type =text/平原上游,并且在Transform消息处理器中将输入有效负载元数据设置为string。

支持的数据格式(根据骡子文献)是Java、XML、JSON、CSV、平面文件、Excel、固定宽度和Cobol文案。

这里的情况显然是一个固定的宽度格式。

票数 1
EN

Stack Overflow用户

发布于 2016-08-26 14:27:56

@Prasad,通常在输入mime类型未设置时抛出错误No Schema Set。在您的情况下,您似乎正在处理固定宽度的数据,因此您可以定义一个固定宽度的模式。这个文章可能会有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39160093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档