比较 csv 的差异

【问题】

Scenario - I would have to compare 2 csv files in mule. Find details like new rows added,deleted or updated. I have searched but there is no such feature/component. Wondering if we can use bash script in mule? The option known to me is through a java component. But wanted better suggestions or ideas

Please suggest pointers to give a start.

【回答】

比较 csv 文件中数据差异其实是结构化数据的集合运算。JAVA 没有提供现成的函数,自行实现很麻烦。可以试试用 SPL 辅助 JAVA,比如下面代码可按 userName\date 双主键找到新增记录。



A

B

1

=file("D:\\old.csv").import@t(;",").sort(userName,date)

=file("D:\\new.csv").import@t(;",").sort(userName,date)

2

=[B1,A1].merge@d(userName,date)



找删除或更新的数据也可用集算器实现,详见《集算器比较 csv 文件中数据差异》。集算器也很容易嵌入到 JAVA 的应用程序中,可以看成是一套用于结构化数据计算的 JAVA 类库。