如何使用 Spring Batch 比较两个未排序的大 CSV 文件?

How to compare two big unsorted CSV files using Spring Batch?

我的任务是比较两个大的 csv 文件并将比较结果写到一个新文件中。文件 1 有 200k 行,文件 2 也可以有 200K 或更少。两者都有 200 列。文件未排序,可以按任何顺序排列。我正在使用 Java 8 和 Spring 版本 4。

问题

我在我的项目中使用 Spring Batch,有没有什么方法可以使用 Spring Batch 定制的 ItemReader 和 ItemWriter 来实现这个,或者我应该使用 tasklet 然后是普通的 Java 比较文件的代码?我也想以最快的方式做到这一点。数据量真的很大,可能有 2-4 Gig,所以我不想将它加载到内存中。文件结构如下所示。

文件 1:
regn_nbr,姓名,地址 1,国家代码,regn_date
2345,John,4332 JFK Boulevard,US,02-12-2011
2347,mark,4332 Maryland Avenue,US,04-27-2015
2348,Smith,4332 JFK road,US,07-30-2011
2302,Andy,4332 JFK lane,US,06-01-2010

文件 2:
regn_nbr,姓名,地址 1,国家代码,regn_date
2345,John,4332 JFK Boulevard,US,02-12-2011
2302,Andy,4332 JFK lane,US,06-01-2010
2911,彼得,12 蜡烛驱动器,MX,01-01-2010
2348,Smith,4332 JFK road,US,07-30-2011
2347,mark,4332 Maryland Avenue,US,04-27-2015

非常欢迎您的建议、不同的方法、策略和专业知识。

你确定你需要一个特殊的程序吗?

我会用

试试

如果内存确实是您最关心的问题,那么它所需要的只是一些 java 主 class、一些 java nio and simple java sql

我认为最好的方法是读取文件并创建两个代表文件结构的特定 java bean 列表。这些 bean 可以实现 Comparable,您可以编写一个方法,该方法可以根据您编写的特定规则对列表进行排序和比较。