比较 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 类库。