判断两个 csv 的内容是否相同

源 csv 和两个目标 csv 的列序可能不同,行序也可能不同:

source.csv

target1.csv

target2.csv

a,b,c

1,2,3

4,5,6

10,11,12

a,c,b

1,3,2

10,12,11

4,6,5

a,c,b

1,2,3

10,12,11

4,6,5

现在要用 Java 判断源 csv 和目标 csv 的内容是否相等,即原本列序不同的的文件,如果调整为相同的列序后,两者以行为成员构成的集合是相等的,则两者内容相等。上面 source.csv 和 target1.csv 内容相等,和 target2.csv 内容不相等。

SPL代码:


A

B

1

=file(arg_source).import@cw()

=file(arg_target).import@cw()

2

=B1(1).align@p(A1(1))

=B1.(~.m(A2))

3

=A1.eq(B2)


函数import@cw按逗号分隔符解析文件,读为序列的序列。align按照某序列的顺序对齐另一个序列,返回某序列里的序号。~循环中的当前成员,函数m按序号取值,eq判断两个序列的成员是否相等。

Java 集成 SPL 可参考 Java 如何调用 SPL 脚本

来源:https://stackoverflow.com/questions/74650317/how-can-two-csv-files-with-the-same-data-but-different-column-orders-be-validate