// let's measure the time roughly long start = System.currentTimeMillis(); CsvParserSettings settings = new CsvParserSettings(); settings.setHeaderExtractionEnabled(true); //extract headers from the first row CsvSearch search = new CsvSearch("City", "Paris"); //We instruct the parser to send all rows parsed to your custom RowProcessor. settings.setProcessor(search); //Finally, we create a parser CsvParser parser = new CsvParser(settings); //And parse! All rows are sent to your custom RowProcessor (CsvSearch) //I'm using a 150MB CSV file with 1.3 million rows. parser.parse(new File("/tmp/data/worldcitiespop.txt")); //get the collected rows from our processor List<String[]> results = search.getRows(); //Nothing else to do. The parser closes the input and does everything for you safely. Let's just get the results: System.out.println("Rows matched: " + results.size()); System.out.println("Time taken: " + (System.currentTimeMillis() - start) + " ms");
public CsvParserSettings csvParserSettings() { CsvParserSettings parserSettings = new CsvParserSettings(); parserSettings.setLineSeparatorDetectionEnabled(true); parserSettings.setHeaderExtractionEnabled(true); parserSettings.selectFields("label", "elapsed", "success", "timeStamp"); RowListProcessor rowProcessor = new RowListProcessor(); ConcurrentRowProcessor concurrentRowProcessor = new ConcurrentRowProcessor(rowProcessor); parserSettings.setProcessor(concurrentRowProcessor); return parserSettings; } }
public <T> List<T> getRows(String lineSep, String delimiter, CsvRowMapper<T> rowMapper) { CsvParserSettings settings = new CsvParserSettings(); settings.getFormat().setLineSeparator(lineSep); settings.getFormat().setDelimiter(delimiter.charAt(0)); RowListProcessor rowProcessor = new RowListProcessor(); settings.setProcessor(rowProcessor); CsvParser parser = new CsvParser(settings); parser.beginParsing(targetFile); List<T> rows = new ArrayList<>(); String[] row; int rowNumber = 1; while ((row = parser.parseNext()) != null) { T mappedRow = rowMapper.mapRow(rowNumber, row); if(mappedRow != null) { rows.add(rowMapper.mapRow(rowNumber, row)); } rowNumber++; } parser.stopParsing(); return rows; }
public CsvParserSettings csvParserSettings() { CsvParserSettings parserSettings = new CsvParserSettings(); parserSettings.setLineSeparatorDetectionEnabled(true); parserSettings.setHeaderExtractionEnabled(false); parserSettings.selectIndexes(TIMESTAMP.getColumn(), VALUE.getColumn(), HOST_AND_METRIC.getColumn()); RowListProcessor rowProcessor = new RowListProcessor(); ConcurrentRowProcessor concurrentRowProcessor = new ConcurrentRowProcessor(rowProcessor); parserSettings.setProcessor(concurrentRowProcessor); return parserSettings; } }
settings.setProcessor(rowProcessor);