关于使用OpenCsv导入大数据量报错的问题

导入100W的Csv数据,使用OpenCsv解析工具解析Csv,发现报错

报错内容

com.opencsv.exceptions.CsvMalformedLineException: Unterminated quoted field at end of CSV line. Beginning of lost text: [XXXXX...]
 at com.opencsv.CSVReader.readNext(CSVReader.java:355) ~[opencsv-4.6.jar!/:na]

解析代码

CSVParser csvParser = new CSVParserBuilder().build();
try (CSVReader readerCsv = new CSVReaderBuilder(new InputStreamReader(csv)).withCSVParser(csvParser).build()) {
    String[] lines;
    while ((lines = readerCsv.readNext()) != null) {
        doRead(lines);
    }
} catch (CsvValidationException e) {
    throw new IOException(e);
}

报错位置发生在英文逗号处,一开始怀疑是英文逗号解析问题
Csv 文本报错位置

"2018-04-28 00:40:43","xxx,XXXXX"

去掉当前位置英文逗号导入仍旧失败
后来查看源码发现默认的 CSVParser 会对反斜杠""进行处理

这导致了解析Csv逻辑与源文件不同
后来使用了 RFC4180Parser 问题解决

RFC4180Parser rfc4180Parser = new RFC4180ParserBuilder().build();
try (CSVReader readerCsv = new CSVReaderBuilder(new InputStreamReader(csv)).withCSVParser(rfc4180Parser).build()) {
    String[] lines;
    while ((lines = readerCsv.readNext()) != null) {
        doRead(lines);
    }
} catch (CsvValidationException e) {
    throw new IOException(e);
}

参考文档:(RFC4180标准文档)https://datatracker.ietf.org/doc/html/rfc4180

到此这篇关于使用OpenCsv导入大数据量报错的问题 的文章就介绍到这了,更多相关OpenCsv导入大数据量报错内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中使用opencsv读写csv文件示例

    OpenCSV是一个简单的用于解析CSV文件的java类库,它封装了CSV格式文件的输出和读入,可以自动处理CSV格式中的特殊字符,最重要的是OpenCSV可以用于商业化(commercial-friendly).具体的使用方法: 读CSV文件 1.使用Iterator方式读 复制代码 代码如下: CSVReader reader = new CSVReader(new FileReader("yourfile.csv")); String [] nextLine; while ((n

  • 使用opencsv文件读写CSV文件

    本文实例为大家分享了opencsv文件读写CSV文件的具体代码,供大家参考,具体内容如下 首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解就进入主题,用Opencsv读写csv文件 读:CSVReader 写:CSVWriter 下面分别来看一下opencsv为我们提供的方法(这里只介绍最常用的几个): 读:CSVReader 构造器中涉及三个参数

  • 关于使用OpenCsv导入大数据量报错的问题

    导入100W的Csv数据,使用OpenCsv解析工具解析Csv,发现报错 报错内容 com.opencsv.exceptions.CsvMalformedLineException: Unterminated quoted field at end of CSV line. Beginning of lost text: [XXXXX...]  at com.opencsv.CSVReader.readNext(CSVReader.java:355) ~[opencsv-4.6.jar!/:na

  • MySQL数据库导入导出数据之报错解答实例讲解

    导出数据 报错 SHOW VARIABLES LIKE "secure_file_priv"; 查看默认导出目录 mysql> SELECT * FROM student INTO OUTFILE "G:\ProgramData\MySQL\MySQL Server 8.0\Uploads\student.txt"; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-p

  • Java实现excel大数据量导入

    本文实例为大家分享了Java实现excel大数据量导入的具体代码,供大家参考,具体内容如下 情景分析: 通常我们通过poi读取excel文件时,若在用户模式下,由于数据量较大.Sheet较多,很容易出现内存溢出的情况 用户模式读取excel的典型代码如下: FileInputStream file = new FileInputStream("c:\\test.xlsx"); Workbook wb=new XSSFWorkbook(file); 而03版(xls)excel文件每个s

  • 针对Sqlserver大数据量插入速度慢或丢失数据的解决方法

    我的设备上每秒将2000条数据插入数据库,2个设备总共4000条,当在程序里面直接用insert语句插入时,两个设备同时插入大概总共能插入约2800条左右,数据丢失约1200条左右,测试了很多方法,整理出了两种效果比较明显的解决办法: 方法一:使用Sql Server函数: 1.将数据组合成字串,使用函数将数据插入内存表,后将内存表数据复制到要插入的表. 2.组合成的字符换格式:'111|222|333|456,7894,7458|0|1|2014-01-01 12:15:16;1111|222

  • 解决Mybatis 大数据量的批量insert问题

    前言 通过Mybatis做7000+数据量的批量插入的时候报错了,error log如下: , ('G61010352', '610103199208291214', '学生52', 'G61010350', '610103199109920192', '学生50', '07', '01', '0104', ' ', , ' ', ' ', current_timestamp, current_timestamp ) 被中止,呼叫 getNextException 以取得原因. at org.p

  • Mysql大数据量查询优化思路详析

    目录 1. 千万级别日志查询的优化 2. 几百万黑名单库的查询优化 3. Mybatis批量插入处理问题 项目场景: Mysql大表查询优化,理论上千万级别以下的数据量Mysql单表查询性能处理都是可以的. 问题描述: 在我们线上环境中,出现了mysql几千万级别的日志查询.几百万级别的黑名单库查询分页查询及条件查询都慢的问题,针对Mysql表优化做了一些优化处理. 原因分析:首先说一下日志查询,在Mysql中如果索引加的比较合适,走索引情况下千万级别查询不会超过一秒,Mysql查询的速度和检索

  • 详解Mysql数据库平滑扩容解决高并发和大数据量问题

    目录 1 停机方案 2 停写方案 3 平滑扩容之双写方案(中小型数据) 4 平滑扩容之2N方案大数据量问题解决 4.1 扩容问题 4.2 解决方案 4.3 双主架构思想 4.4 环境部署 5 数据库秒级平滑2N扩容实践 5.1 新增数据库VIP 5.2 应用服务增加动态数据源 5.3 解除原双主同步 5.4 安装MariaDB扩容服务器 5.5 增加KeepAlived服务实现高可用 5.6 清理数据并验证 1 停机方案 发布公告 停止服务 离线数据迁移(拆分,重新分配数据) 数据校验 更改配置

  • 大数据量时提高分页的效率

    如我们在之前的教程里讨论的那样,分页可以通过两种方法来实现: 默认分页– 你仅仅只用选中data Web control的 智能标签的Enable Paging ; 然而,当你浏览页面的时候,虽然你看到的只是一小部分数据,ObjectDataSource 还是会每次都读取所有数据 自定义分页– 通过只从数据库读取用户需要浏览的那部分数据,提高了性能. 显然这种方法需要你做更多的工作. 默认的分页功能非常吸引人,因为你只需要选中一个checkbox就可以完成了.但是它每次都读取所有的数据,这种方式

  • php 大数据量及海量数据处理算法总结

    下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题.下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论. 1.Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数.将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明

  • 大数据量高并发的数据库优化详解

    如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 一.数据库结构的设计 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整个系统的流程的时候,我们必须

随机推荐