2

我有几个 CSV 文件,我需要加载它们并按列值搜索行。有人建议使用 OpenCSV 项目来加载 CSV。但我不知道这是否是最好的方法。OpenCSV 是否提供一些搜索/过滤实用程序?

有没有更好的方法来做我需要的事情?

4

4 回答 4

3

您可以将 CSV 文件中的数据加载到您喜欢的 SQL 引擎中,例如 MySQL 或 SQLite,并使用 SQL 方便快捷地进行过滤。这是一项常见任务,因此数据库已经准备好使用工具从 CSV 文件中导入数据,这就是您在 SQLite 中可以做到的方式:http ://www.sqlite.org/cvstrac/wiki?p=ImportingFiles

于 2012-12-11T10:33:43.123 回答
0

如果您的 CSV 文件太大而无法保存在内存中,并且您不想先将所有内容存储在数据库中(这将是一个乏味的磁盘到内存到磁盘的操作),那么似乎没有人提到另一种方法:流媒体。

该方法包括从文件中读取一些行,对其进行处理,然后丢弃与您的搜索不匹配的行。例如,您可以使用 Apache commons FileUtils 来执行此操作。它可能是一些现有的 CSV API 提供的,我没有检查过。

于 2012-12-11T13:41:25.747 回答
0

Apache Commons CSV这样的东西只会给你一个二维字符串数组。我怀疑任何解决方案都会给你更多的东西(在 CVS 文件中没有类型/模式信息),我怀疑这些结果的精心设计的循环就是你所需要的。这将是最简单最快的(根据要求)。

如果您想做更多事情,您可以在 JVM 中运行标准 Java 提供的JavaDb 数据库,将结果加载到该数据库中,并在没有外部数据源/服务的情况下执行 SQL 查询。

请注意,如果您加载相当大的 CSV,内存可能会成为问题,但这些有多大?现在内存便宜。

于 2012-12-11T10:35:59.957 回答
0

使用嵌入式数据库,将 CSV 与搜索功能分开。

于 2012-12-11T10:34:03.820 回答