Parsing UniVocity 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()输出) 有人能解释一下问题所在吗 这是我的parserSettingsParsing 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
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-请检查并发表意见