数据编织 2.0 csv 转换

dataweave 2.0 csv transformattion

获取下面的 csv 文件作为输入

Id|Name|ParentId
001|National|AREG-001
0013|Texas|AREG-001
0012|Tennessee|AREG-001
0006|Indiana|AREG-001

我希望输出为

('001','National','AREG-001'),
('0013','Texas','AREG-001'),
('0012','Tennessee','AREG-001'),
('0006','Indiana','AREG-001')

运行时间:4.2.1

如何改造。

这是一种快速简单的解决方法。

output text/plain
---
"('" ++ 
(
  payload map ((value, index) -> 
    dw::core::Objects::valueSet(value) joinBy  "','"
  ) joinBy "'),\n('"
) 
++ "')"

不要忘记设置 CSV reader 参数 separator="|" 以便正确解释输入。

从 Mule 4.3 开始,您可以使用 valuesOf 而不是 dw::core::Objects::valueSet

另一种使用 reduce() 并显式连接每个字段的方法:

%dw 2.0
output text/plain
---
payload  reduce ((item, acc = "") -> acc ++ "('" ++ item.Id ++ "','" ++ item.Name ++ "','" ++ item.ParentId ++ "')\n")]]></ee:set-payload>

无论如何这是连接字符串,因此您应该注意,如果记录数很多,您可能 运行 内存不足。