java - 哪个是处理大型 CSV 文件的最佳方式(Java、MySQL、MongoDB)

标签 java mysql mongodb csv

我需要处理一个包含大约 +750.000 行数据大型 CSV 文件。每行都有大约 1000 多个字符 和 ~50 个,我真的不确定什么是最好的(或者至少是好的和足够的)< strong>处理和操纵这类数据的方法。

我需要执行以下步骤:

  1. 比较两个列的值将结果写入新列(这个看起来很简单)
  2. 比较两条线的值并做一些事情。 (例如,如果一个值重复则删除。)
  3. 比较两个不同文件的值

我的问题是,目前这是使用 PHP 和/或 Excel 完成的,并且几乎超过了的限制 + 这需要很长时间来处理,并且不再可能> 当文件变得更大时。

我有3种不同的可能性:

  1. 使用 MySQL,创建一个(或两个)表并进行比较、添加或删除部分。 (我不太熟悉 SQL,必须学习它,而且它应该自动完成,所以存在问题,您无法创建 CSV 文件表)
  2. 使用 Java 创建 ArrayList 或链接列表中的对象 并“处理”(操作很容易,但处理那么多数据可能是问题) (它甚至可以用 Java 保存那么多文件还是会崩溃/是否有好的工具等?)
  3. 结合使用 Clojure 和 MongoDB 将文件从 CSV 添加到 MongoDB 并使用 Mongo 读取文件。

(如果您有其他想法,请说出其他可能性......)

总而言之,我不是其中任何一个专家,但想解决这个问题/获得一些提示甚至您的意见。

提前致谢

最佳答案

由于我们公司经常处理巨大的 csv 文件,所以这里有一些想法:

  • 因为在我们的案例中这些文件总是从其他一些关系数据库导出,所以我们总是使用 PostgreSQL、MySQL 或 golang + SQLite 以便能够使用简单的普通 SQL 查询,这在这些案例中是最简单和可靠的解决方案

  • 从所有这些数据库的角度来看,您描述的行数非常低,所以不要担心

  • 都有用于导入/导出 CSV 的 native 内部解决方案 - 这比手动创建的任何东西都快得多

  • 对于重复的标准检查,我使用 golang + SQLite 和 :memory: 数据库——这绝对是最快的解决方案

  • 对于您描述的检查,MySQL 绝对非常好且快速,但数据库的选择还取决于您需要做的进一步分析的复杂程度 - 例如 MySQL 高达 5.7 仍然没有您可能需要的窗口函数稍后 - 所以在某些情况下也考虑使用 PostgreSQL...

关于java - 哪个是处理大型 CSV 文件的最佳方式(Java、MySQL、MongoDB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863248/

相关文章:

java - 为另一个字符串的子字符串创建一个新的字符串是多余的吗?

php - 如何构建 mySQL 函数来访问 K2 extra_fields

mongodb - 系统间缓存和 MongoDB 比较

mongodb - NoSQL 最佳实践 : should I save derivative (calculated data) as it is used in app?

mongodb - 无法在 Ubuntu 12.04 上启动 mongodb-linux-2.4.1

java - 为什么 Java ArrayList 删除功能似乎花费这么少?

Java:应用于 Map 泛型类型的多态性

java - Swing 组件出现问题

mysql - DBD:无法使用 MySql DB 使用 HTTP 基本身份验证加载驱动程序文件 apr_dbd_mysql.so

php - 如果两个表中都存在相同的 ID,如何隐藏选择下拉列表中的选项