Parsing UniVocity CSV解析器是否会改变长度?

Parsing UniVocity CSV解析器是否会改变长度?,parsing,csv,Parsing,Csv,我有一个2600万行的数据集,当我尝试用uniVocity解析器解析它时,它只读取1800万行。 “我的行”字段计数从158到162不等,分隔符为ASCII“\u0001” 来自linux的wc-l输出>>>>wc-l with header.dat 26351323,带header.dat 但解析器将其读取为file=18554088中的行总数(从list.size of parser.parseAll()输出) 有人能解释一下问题所在吗 这是我的parserSettings sett

我有一个2600万行的数据集,当我尝试用uniVocity解析器解析它时,它只读取1800万行。 “我的行”字段计数从158到162不等,分隔符为ASCII“\u0001”

来自linux的wc-l输出>>>>wc-l with header.dat 26351323,带header.dat

但解析器将其读取为file=18554088中的行总数(从list.size of parser.parseAll()输出)

有人能解释一下问题所在吗

这是我的parserSettings

    settings.getFormat().setLineSeparator("\n");
    settings.selectFields("acctId","tcat", "transCode");
    settings.getFormat().setDelimiter('\u0001');
    //settings.setAutoConfigurationEnabled(true);
    //settings.setMaxColumns(86);
    settings.setHeaderExtractionEnabled(false);

    // creates a CSV parser
    CsvParser parser = new CsvParser(settings);
    // parses all rows in one go.
    List<String[]> allRows = parser.parseAll(newReader(filePath));
    System.out.println("Total # of rows in file = " + allRows.size());
settings.getFormat().setLineSeparator(“\n”);
设置。选择字段(“acctId”、“tcat”、“transCode”);
settings.getFormat().setDelimiter('\u0001');
//settings.setAutoConfigurationEnabled(true);
//setMaxColumns(86);
设置。setHeaderExtractionEnabled(false);
//创建CSV解析器
CsvParser parser=新的CsvParser(设置);
//一次性解析所有行。
List allRows=parser.parseAll(newReader(filePath));
System.out.println(“文件中的行总数=”+allRows.size());

如果您的值可以包含行分隔符,则解析的记录数将不等于行数

如果不是这样,则可能是您没有正确配置格式。您可能需要配置引号、引号转义等

我的第一个建议是尝试使用以下方法自动检测格式:

settings.detectFormatAutomatically();
解析后,检查您是否获得了希望找到的行数。您可以通过调用以下命令获取检测到的内容:

CsvFormat detectedFormat = parser.getDetectedFormat();
请记住,这个过程并不能保证有效,但在大多数情况下,它确实起到了作用。这些功能从2.0.0版开始提供


如果没有任何帮助,请附上(部分)您的输入文件,以便我查看并更新我的答案。

@jeronimo backes-请检查并发表意见