为 CSV 文件制作解析器以获取大量数据
Posted
技术标签:
【中文标题】为 CSV 文件制作解析器以获取大量数据【英文标题】:Make parser for CSV file to get tons of data 【发布时间】:2015-10-31 09:59:10 【问题描述】:我做了一些工作来从一个大的 CSV 文件中提取数据。它有很多与文章和出版商相关的数据。所以我想用Java为它制作一个解析器来制作一个数据仓库并在OLAP中显示这些数据。 谁能告诉我如何开始使用它?
【问题讨论】:
【参考方案1】:首先看看你是否可以在没有编程的情况下做到这一点(优秀的程序员都是出了名的懒惰——为什么要打破传统)。查看您的数据仓库的提供商是否允许导入 csv 数据。例如,在 Oracle 中,您可以import csv files via sql developer。
如果那是不可能的(比如一行 csv 最终会出现在多个表中),那么我将从一个测试程序开始。为将由 csv 文件(文章、杂志、出版商、作者等)填充的所有数据和一个包含每个实例(如果单行有多个,则为多个)和 csv 行本身的 uber 对象编写对象。有一个用于读取文件并返回您的 uber 对象列表的接口,以及一个用于写入列表的接口。
然后创建实现使用常见解决方案的读取接口的对象 - java split、opencsv、univelocity-parsers、apache commons csv、supercsv。还有一个服务,它获取 uber 对象列表并将内容(原始行然后解析的内容)写入文本文件。
然后编写一个主 java 应用程序,该应用程序将读取您的一个 csv 文件,并为每个读取方法读取文件并将其输出到每种类型的不同平面文件。如果失败,请查看您是否可以将其配置为工作,或者如果它变得太烦人,请将其从您的列表中删除。在某些时候,您会归结为您喜欢的解析器的简短列表,并且它们的所有输出文件都是相同的(因此它们都可以工作或都失败)。然后选择你最喜欢的那个。
此时,将写入替换为写入数据库的对象,并修改读取,使其一次读取一条记录,这样在处理大文件时就不会耗尽内存,您就完成了。
:)
【讨论】:
以上是关于为 CSV 文件制作解析器以获取大量数据的主要内容,如果未能解决你的问题,请参考以下文章