java - 从CSV中的非常大的源解析CSV文件到数组

java - 从CSV中的非常大的源解析CSV文件到数组,第1张

我有一个解析器可以在大约的小文件上正常工作。 60000行或更少,但我必须解析一个超过1000万行的CSV文件,这个方法只是不工作它每10万行挂起10秒钟我假设它是拆分方法,有更快的方法将数据从CSV解析为字符串数组?

有问题的代码:

    String[][] events = new String[rows][columns];
    Scanner sc = new Scanner(csvFileName);

    int j = 0;
    while (sc.hasNext()){
        events[j] = sc.nextLine().split(",");
        j  ;
    }

最佳答案:

3 个答案:

答案 0 :(得分:2)

您的代码无法可靠地解析CSV文件。如果您在值中有','或行分隔符怎么办?这也很慢。

获取uniVocity-parsers来解析您的文件。它比Apache Commons CSV快3倍,具有更多功能,我们用它来处理数十亿行的文件。

将所有行解析为字符串列表:

CsvParserSettings settings = new CsvParserSettings(); //lots of options here, check the documentation

CsvParser parser = new CsvParser(settings);

List<String[]> allRows = parser.parseAll(new FileReader(new File("path/to/input.csv")));

披露:我是这个图书馆的作者。它是开源和免费的(Apache V2.0许可证)。

答案 1 :(得分:1)

根据经验,使用库通常比内部开发更有效。有几个库提供读取/解析csv文件。其中一个比较受欢迎的是Apache Commons CSV

答案 2 :(得分:0)

您可能想尝试一下我刚刚发布的库:sesseltjonna-csv

它在运行时使用ASM动态生成CSV解析器 数据绑定,以提高性能。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复