Mule 4-如何处理非标准CSV文件(逐行)

问题描述 投票:0回答:2

常规的CSV文件将包含所有具有相同列的行和一个可选的标题行,但是在这种情况下,我需要处理一个看起来不标准的CSV文件,因为它的“标题”行包含5列,然后是未指定数量的“正文”行,每行包含约15列(与标题行无关),最后以“页脚”行包含4列结束。]

看起来整个文件代表一个对象,就像这样:

headerValue1,headerValue2,headerValue3,headerValue4,headerValue5
bodyvalue1,bodyvalue2,bodyvalue3,bodyvalue4,bodyvalue5,bodyvalue6,bodyvalue7,bodyvalue8,bodyvalue9
bodyvalue1,bodyvalue2,bodyvalue3,bodyvalue4,bodyvalue5,bodyvalue6,bodyvalue7,bodyvalue8,bodyvalue9
footervalue1,footervalue2,footervalue3,footervalue4

我需要将其转换为JSON格式,因此一直在尝试使用for循环将CSV值设置为对象数组,但是运气不好(没有有用的代码可以发布)。带有标题和不带m子的CSV格式似乎都无法正常工作,因为似乎希望每一列都包含相同的字段类型,但它们却不相同。

[也尝试为其定义一个平面文件模式,但也没有运气(可能是由于我对该领域的了解有限)。

所以我的问题是如何正确或有效地将此CSV数据传递到可用的数组或对象中,或者甚至直接转换为JSON格式?

常规的CSV文件将包含所有具有相同列的行,以及一个可选的标题行,但是在这种情况下,我需要处理一个看起来似乎是非标准的CSV,因为它具有“ ...

csv mule anypoint-studio dataweave
2个回答
1
投票

DataWeave处理这种情况。未命名的列将获得通用列名('columns_N')。对于example see the documentation。直接有效负载转换(即“有效负载”)有效。

DataWeave示例:


0
投票

如果我的理解正确,您的文件是一个平面文件结构,包含页眉,数据/正文,页脚,其中每个记录/段都是定界记录。 Mule的平面文件阅读器将无法使用,因为它仅支持固定宽度的记录。您可以做的是将每组记录分成字符串,然后将每条记录读为csv。我可以在两个转换步骤中执行此操作,即转换1-读取文件并将有效载荷解析为字符串数组,转换2-将字符串数组转换为正确的json格式。请注意,此处可能会出现性能问题(如果您的平面文件太大),因为它将有效负载作为字符串保存在内存中。

© www.soinside.com 2019 - 2024. All rights reserved.