Я хочу проанализировать большой CSV-файл как можно быстрее и эффективнее.
В настоящее время я использую библиотеку openCSV для анализа моего CSV-файла, но для анализа CSV-файла требуется около 10 секунд.10776 записей с 24 заголовками, и я хочу проанализировать файл CSV с миллионами записей.
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.1</version>
</dependency>
Я использую синтаксический анализ библиотеки openCSV, используя приведенный ниже фрагмент кода.
public List<?> convertStreamtoObject(InputStream inputStream, Class clazz) throws IOException {
HeaderColumnNameMappingStrategy ms = new HeaderColumnNameMappingStrategy();
ms.setType(clazz);
Reader reader = new InputStreamReader(inputStream);
CsvToBean cb = new CsvToBeanBuilder(reader)
.withType(clazz)
.withMappingStrategy(ms)
.withSkipLines(0)
.withSeparator('|')
.withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
.withThrowExceptions(true)
.build();
List<?> parsedData = cb.parse();
inputStream.close();
reader.close();
return parsedData;
}
Яищет предложения по другому способу анализа файла CSV с миллионами записей за меньшее время.
--- обновил ответ ----
Reader reader = new InputStreamReader(in);
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT
.withFirstRecordAsHeader()
.withDelimiter('|')
.withIgnoreHeaderCase()
.withTrim());
List<CSVRecord> recordList = csvParser.getRecords();
for (CSVRecord csvRecord : recordList) {
csvRecord.get("headername");
}