【发布时间】:2018-02-19 09:42:31
【问题描述】:
我需要处理一个大型 CSV 文件,其中包含大约 +750.000 行数据。每行大约有 1000+ 个字符 和约 50 个列,我真的不知道什么是 最好的(或至少是好的和足够的)处理和操作此类数据的方法。
我需要执行以下步骤:
- 比较两个列的值并将结果写入新列(这个看起来很简单)
- 比较两行的值并做一些事情。 (例如,如果一个值重复,则删除。)
- 比较两个不同文件的值。
我的问题是,目前这是使用 PHP 和/或 Excel 完成的,并且限制几乎超过 + 这需要很长时间来处理并且将不再可能 当文件变得更大时。
我想到了 3 种不同的可能性:
- 使用 MySQL,创建一个(或两个)表并进行比较、添加或删除部分。 (我对 SQL 不是很熟悉,必须学习它,而且它应该是自动完成的,所以存在 问题,您无法创建 CSV 文件表)
- 使用 Java 在 ArrayList 或链接列表中创建 对象 并创建“东西”(操作很容易,但处理这么多数据可能会成为问题强>) (是否可以在 Java 中保存这么多文件还是会崩溃/是否有好工具等?)
- 结合使用 Clojure 和 MongoDB 将文件从 CSV 添加到 MongoDB 并使用 Mongo 读取文件。
(如果您有其他想法,请说出其他可能性..)
总而言之,我不是这些方面的专家,但我想解决这个问题/得到一些提示,甚至是你的意见。
提前致谢
【问题讨论】:
-
你应该说比较两行的值和比较两个不同文件的值是什么意思。如果您只需要比较一个标识符(可能由多个字段组成),数据库表上的唯一索引可能会有所帮助。
-
如果您显示您的 cvs 文件的一部分可能会有所帮助,那么我们就知道您在说什么。
-
抱歉解释不准确。该文件带有某些产品的 ID 等值,如果这些 ID 重复,则必须删除其中一个。如果它们的价值不同,另一种情况是与列(例如旧价格和新价格)进行比较。我希望这更清楚。
-
不要在 Java 中这样做,省去编写大量代码的麻烦。
-
Postgres 是最简单的解决方案,而且它会帮助您永远了解如何使用它,所以您现在应该学习。