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

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

https://stackoverflow.com/questions/56453492/

相关文章:

ionic-framework - LocalStorage 中设置的键值可供其他应用程序访问

logging - 如何为 KTOR 添加日志拦截器?

amazon-web-services - 对于不支持发件人 ID 的国家/地区,AWS SNS S

sql-server - 连接到 SharePoint 服务器的 SQL 服务器

c# - 如何在另一个类中获取单例实例

r - 如何更改 R 包的默认库路径

python-3.x - 如何在 Visual Studio Code 中使用 activate.b

angular - 找不到 "src/assets"文件夹中的 JSON 文件

spring-cloud - Spring Cloud Gateway 阻止路由发现请求

android - Xamarin 安卓 : Cannot resolve GoogleSignIn