0

获取以下 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

如何转变。

4

2 回答 2

3

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

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

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

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

于 2020-12-11T21:31:21.917 回答
2

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

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

无论如何,这是连接字符串,因此您应该注意,如果记录数很高,您可能会耗尽内存。

于 2020-12-11T21:52:14.090 回答