忽略带引号的行或获取DataWeave将读取无效的CSV

时间:2015-12-03 16:48:45

标签: csv mule dataweave

我尝试使用Mule的DataWeave组件来读取无效的CSV文件,或者至少不符合RFC 4180。问题是有些值包含引号,但该字段未被转义。例如,

col1,col2,col3
one,two "two" two,three
one",two,three

有没有办法以简单的方式稍微放松DataWeave使用的CSV解析器中的规则,以便它将不以双引号作为非转义值的值处理?或者,我可以(使用DataWeave或其他转换)忽略所有带引号的文本行吗?它不到百分之一的行数,并且这些行偶然与此集成无关,但我无法控制CSV生成。

编辑:以下是一个例子:

CSV

Column A,Column B,Column C,Column D
A,Something Weird",C,D
A,B,Something Else" Weird,D,
A,",S,o,m,e,t,h,i,n,g, ,N,o,r,m,a,l,",C,D

DataWeave

%dw 1.0
%input payload application/csv
%output application/json
---
payload

输出

[
  {
    "Column A": "A",
    "Column B": ",C,D\r\nA,B,Something Else",
    "Column C": "D",
    "Column D": ""
  },
  {
    "Column A": "A",
    "Column B": ",S,o,m,e,t,h,i,n,g, ,N,o,r,m,a,l,",
    "Column C": "C",
    "Column D": "D"
  }
]

1 个答案:

答案 0 :(得分:-1)

  

或者,我可以(使用DataWeave或其他转换)忽略所有带引号的文本行吗?

不确定。只需删除输入中包含双引号的所有行, DataWeave转换器之前。