当前位置: 首页 > 知识库问答 >
问题:

如何在Mule dataweave中读取带有空行和额外标题的CSV文件

孔鸿哲
2023-03-14

我有CSV,下面有空白行和额外的牧人,如下所示:

**blank line**
Available_Date_Feed
productID,availableDate
148305801,2015-08-07T00:00:00.000+0000
160611862,2015-07-29T00:00:00.000+0000
160611715,2015-07-29T00:00:00.000+0000
160342798,2015-07-29T00:00:00.000+0000

我想读取productID的值

这是我在dataweave中编写的代码:

%dw 1.0
%input in0 application/csv headers=true
%output application/java
---
payload  map  {
    productID:$.productID,
    availableDate:$.availableDate
}

将有效载荷返回为:

[{productID=null, availableDate=null}, {productID=null, availableDate=null}, {productID=null, availableDate=null}, {productID=null, availableDate=null}]

这里有什么建议吗?我们可以使用Groovy/MEL/regex表达式吗?如何在Dataweave中使用行忽略?

我们可以使用Groovy/regex跳过前两行吗?

我正面临着下面的groovy的性能问题。Mule花了太多时间来转换甚至1MB的文件。对此还有其他解决方案吗?

共有3个答案

魏岳
2023-03-14

这个链接可能会有帮助

https://developer.mulesoft.com/docs/dataweave

并阅读上述文档中的以下代码片段以跳过空值

% output application/XML skip nullon = " everywhere "

燕成双
2023-03-14

我知道很晚了。如果仍在等待答案,请尝试此操作。它只在dataweave中完成。

%dw 1.0
%output application/csv header=false
---
payload[3..-1] map {
    productId:$[0],
    date: $[1]
}

希望有帮助。

丘畅
2023-03-14

我用Groovy跳过了前两行。这个脚本直接获取逗号分隔的值

 csvContent = message.payload
def filteredContent = new StringBuffer()
regexPattern = /(\S*),(\S*)/
finder = csvContent =~ regexPattern

(0..<finder.count).each {
    //println "Iteration: ${it+1}:"
    filteredContent.append(finder[it][0])
    filteredContent.append('\n')

}

return filteredContent.toString()

使用对象在Groovy之前字符串

 类似资料:
  • 问题内容: 我正在读取一个基本的csv文件,其中这些列用逗号分隔,这些列名称分别为: 但是,主体列是一个字符串,可能包含逗号。显然,这会导致问题,并且熊猫抛出错误: 有没有一种方法可以告诉熊猫忽略特定列中的逗号,或者可以解决该问题? 问题答案: 想象一下,我们正在读取名为的数据框: 您可以做的一件事是使用以下命令在列中指定字符串的定界符: 在这种情况下,以逗号分隔的字符串将被视为总数,而不管它们之

  • 刚找到爸爸的主页,想学着使用它。总的来说,东西看起来很好用。 我在Excel中创建了一个超级简单的工作表:三列,第一行是命名列的标题行,然后是三个数据行,以CSV格式保存了电子表格。打开那个CSV文件,它有4行,就像我预期的那样。 创建了一个网页来运行Papa。解析,将结果转储到控制台。日志,如示例所示: 我很高兴在这里看到我的数据,除了第五个阵列之外,其他的数据都按照我的预期排列。这似乎是“额外

  • 问题内容: 我希望用户上传一个.csv文件,然后让浏览器能够解析该文件中的数据。我正在使用ReactJS。这将如何运作?谢谢。 问题答案: 弄清楚了。的组合反应文件阅读器和HTML5的的FileReader(见本页)。 将react-file-reader位放在render内部: 然后在上面。

  • 问题内容: 我尝试将文件读入熊猫。该文件具有以空格分隔的值,但是我尝试使用不同数量的空格: 但这不起作用 问题答案: 添加参数,它比正则表达式更快。

  • 问题内容: 我必须用Java读取CSV文件,我用Google对其进行了搜索,但是我有办法使用标题进行读取;但我没有文件中可用的列标题和列数的信息。在这种情况下,我该如何读取CSV文件。 谢谢 问题答案: 您可以假设每一行都是String类,并将所有内容读取到二维数组中。之后,您可以尝试将字符串解析为适当的格式。 但是,如果您不知道行数据类型,这只是一个猜测。

  • 问题内容: 这是我的代码,我能够打印每行,但是当出现空白行时,它会打印;由于CSV文件格式,因此当空白行出现时我想跳过 问题答案: 如果要跳过所有空格行,则应使用以下测试:。 由于您可能需要做的事情不只是将非空白行打印到控制台上(不需要使用CSV模块),因此这里是一个涉及DictReader的示例: