搜索和存储CSV的值



我是Java-Beginner,想学习如何以使其易于操作的方式读取文件和存储数据。

我有一个很大的CSV文件(18000行(。数据代表了来自利口酒商店出售的所有不同饮料的种类。它由16列列组成,标题为"文章号,名称,生产者,酒精量等。这些列是" t"。

我现在想在此文件中进行一些搜索,以找到诸如瑞典生产的产品并找到最昂贵的利口酒/升的东西。

由于我真的想学习如何编程,而不仅仅是找到答案,我在这里没有寻找任何确切的代码。相反,我在处理大量数据以及最适合任务的数据结构时,正在寻找此背后的Psuedo代码以及一种很好的思维方式。

以"瑞典有多少产品"的示例。由于数据由字符串,INT和浮子组成,因此我不能将所有内容都放在列表中。存储它的最佳方法是什么,以后可以操纵它?还是可以在解析后立即找到它,也许我根本不需要存储它?

如果您是Java和编程的新手,我建议您一个库来帮助您查看和使用数据,而无需进入数据库并学习SQL。我过去使用过的是Commons CSV。

https://commons.apache.org/proper/commons-csv/user-guide.html#parsing_files

它使您可以轻松地将整个CSV文件解析到CSVRECORD对象中。例如:

Reader in = new FileReader("path/to/file.csv");
Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
for (CSVRecord record : records) {
String lastName = record.get("Last Name");
String firstName = record.get("First Name");
} 

如果您有CSV文件,则可以使用数据库存储此数据。您使用此链接在Java中读取CSV。

与春季应用程序一起使用ORM框架。使用此链接创建应用程序

通过使用此功能,您可以创建查询来获取数据,例如"来自瑞典的多少产品"并使用集合框架。此链接在同一应用程序中使用HQL查询。

创建JSP页面以显示UI上的结果。

对不起我的英语。

看来,您正在通过CSV文件寻找内存SQL引擎。我建议使用CQENGINE,该CQENGINE在Java Collection Framework上提供带有类似SQL的查询的索引视图。

您基本上将Java Collection视为数据库表。假设每个CSV线映射到某些POJO类,例如Beverage

IndexedCollection<Beverage> table = new ConcurrentIndexedCollection<Beverage>();
table.addIndex(NavigableIndex.onAttribute(Beverage.BEVERAGE_ID));
table.add(new Beverage(...));
table.add(new Beverage(...));
table.add(new Beverage(...));

您现在需要做的是读取CSV文件并将其加载到IndexedCollection中,然后在某些字段上构建适当的索引。之后,您可以作为通常的SQL数据库查询表。最后,将集合列为新的CSV文件(如果进行了任何修改(。

最新更新