gpt4 book ai didi

csv - 在 Java 中解析大型 CSV 文件的最快最有效的方法

转载 作者:行者123 更新时间:2023-12-05 07:22:41 30 4
gpt4 key购买 nike

我想尽可能快速高效地解析大型 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");
}

最佳答案

回答

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");
}

关于csv - 在 Java 中解析大型 CSV 文件的最快最有效的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56453492/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com