2012-03-16 39 views
0

我有每个月结束的用户详细信息文件。比较两个文件中记录的数据变化

文件将有类似的ID,F名称,L的姓名,地址,电话,公交电话,兴趣爱好,书列

id是唯一的密钥识别个人身份的。

我需要维护一个来自这个文件的信息的数据库。

在1月份说这个文件有100个用户。 2月份该文件有110个用户。意味着10个新用户。

所以我将排序这两个文件的id,现在将新的10个用户,并将添加它们。

问题是,我也想检查对现有ID的更改。

因此,对于id 3在jan中的地址是xyz,在feb文件中它变成了pqr,我想知道它并相应地更新数据库。

因此 - 比较两个文件(固定格式)中的记录以便了解列中数据更改的最简单以及最有效的方法?

我可以想到的一种方法是对两个文件中的每条记录都进行校验和,并将它们进行比较以了解这些更改。但是想知道这是正确的方式还是有更好的方法?

+0

http://stackoverflow.com/q/9766720/887235 通过上述问题得到答案。 – Nik 2012-03-31 03:18:45

回答

0

那么,你有FileUtils.contentEquals方法(http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html)。如果没有基于时间的头文件等,并且可以直接比较内容,这种方法可以很好地工作。

+0

你有这样一个例子的指针吗? contentEquals会告诉我在我的情况下是否存在差异总是在那里。我想知道的是不同的是 - 不管是添加新行还是删除一些行或者修改了行! – Nik 2012-03-19 07:37:37

+0

据我所知,FileUtils只是做比较。所以它可能不符合你的目的。 – 2012-03-19 07:46:48

+0

我发布了一个新问题,详细解释了我的问题。如果你感兴趣! – Nik 2012-03-19 08:01:15

0

简单而简单的解决方案是添加最后一个更新列并在其中放置日期/时间戳。这基本上与校验和一样,但是会是人类可读的。对于数据库的规模来说,两种方法都是有效的。

+0

我确实可以控制更改文件格式。所以你建议的解决方案是不可行的。 :( – Nik 2012-03-16 04:32:41

+0

计算哈希/校验和是比较它们以查看记录是否不同的完美可接受的方式,但是,您将无法很好地解决冲突编辑,但这可能不成问题。 – 2012-03-17 04:29:09