-2

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

问题

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

File1 :
regn_nbr,name,address1,countrycode,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

File2 :
regn_nbr,name,address1,countrycode,regn_date
2345,John,4332 JFK Boulevard,US,02-12-2011
2302,Andy,4332 JFK lane,US,06-01-2010
2911,Peter,12烛光驱动器,MX ,01-01-2010
2348,Smith,4332 JFK road,US,07-30-2011
2347,mark,4332 Maryland Avenue,US,04-27-2015

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

4

2 回答 2

0

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

我会试试

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

于 2016-04-08T21:38:00.797 回答
0

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

于 2016-04-14T15:59:08.033 回答