CSV格式文件解析方法、装置及介质与流程

    专利查询2025-03-31  5


    本公开属于数据解析,特别涉及一种csv格式文件解析方法、装置及介质。


    背景技术:

    1、csv(comma-separated values)是一种常用的数据交换格式,是一种纯文本文件格式。csv的格式很简单,以逗号为分隔符,在每行记录内按照一定顺序排列数据,每个数据之间都用逗号隔开,并且行与行之间用换行符(\n)分割。目前,车企很多车端数据采集用的都是csv文件进行储存数据,csv格式的文件可以用纯文本编辑器打开,与其他文件格式相比,csv具有以下几个独特的特点:csv文件采用纯文本格式,不依赖于任何特定的软件或数据库;csv文件无论是windows、mac还是linux系统,几乎所有的电子表格软件和数据库系统都能够轻松地读取和处理csv文件;csv文件不仅可以表示简单的二维表格数据,还可以扩展为多维、复杂的数据结构,通过在逗号之间添加引号或转义字符,csv文件能够准确地表示包含特殊字符、换行符等复杂数据。

    2、目前车端采集数据格式大多数为csv格式,则相应的csv文件解析并入库功能是各类车端数据管理系统中基本且使用频繁较高的一个应用功能,而处理大规模数据导入csv方案主要包括: 使用apache 软件基金会开源的apache-poi套件库完成文件的解析及导入;使用0pencsv组件完成解析导入数据。相关技术中导入csv文件到数据库时主要采取同步单线程的方式,读取csv文件,对csv文件进行解析后转换成相应的对象,然后执行存入数据库的动作,最后反馈给客户端导入的结果。

    3、0pencsv技术在实现大数据导入存储数据库时,由于需要较长的耗时,且如果需要执行多个导入任务,为后端服务的正常运行带来风险,且普遍采用同步导入的方案,会使用户提交导入请求等待响应的时间较长,导致较差的用户体验。


    技术实现思路

    1、本公开提出一种csv格式文件解析方法、装置及介质,以解决上述技术问题。

    2、根据本公开的第一方面,提供了一种csv格式文件解析方法,所述方法包括:获取待处理的csv文件集合;基于cpu的数量预设线程池大小;根据预设的拆分策略,对所述csv文件集合进行分组;将分组后的csv文件集合提交至线程池;通过线程池中的每个线程对分组后的csv文件集合进行解析,得到解析数据集合;遍历解析数据集合,将每行数据封装成目标数据库对应的java对象;将java对象批量存入目标数据库。

    3、在一些实施例中,所述基于cpu的数量预设线程池大小,包括:获取当前计算机cpu的数量;根据公式:k=z*2+1,计算得到线程池大小k,其中,z表示cpu的数量。

    4、在一些实施例中,所述根据预设的拆分策略,对所述csv文件集合进行分组,包括:基于csv文件时间对待处理的csv文件集合进行排序;通过p%m做取余计算,得到每个线程池第一次分配处理的文件数量t和剩余文件数量n,将前n个线程每个分配一个剩余文件,最终得到线程池中每个线程需要处理的csv文件数。

    5、在一些实施例中,所述线程池中的每个线程对分组后的csv文件集合进行解析,包括:判断当前线程数量是否小于预设核心线程数量;若当前线程数量小于等于预设核心线程数量,创建新线程执行解析任务;若当前线程数量大于预设核心线程数量,将多余的csv文件放入预设工作队列。

    6、在一些实施例中,判断预设工作队列是否满足工作条件;若预设工作队列满足预设工作条件,判断当前线程数量是否小于最大线程数量;若当前线程数量小于最大线程数量,创建新线程执行解析任务;若当前线程数量大于等于最大线程数量,拒绝将多余的csv文件放入预设工作队列。

    7、在一些实施例中,将多余的csv文件放入预设工作队列之后,若工作满了,判断当前线程数量是否小于最大线程数量;若当前线程数量小于最大线程数量,创建新线程执行解析任务;若当前线程数量大于等于最大线程数量,拒绝执行解析任务。

    8、根据本公开的第二方面,提供了一种 csv格式文件解析装置,所述装置包括:待处理的csv文件集合获取模块,用于获取待处理的csv文件集合;线程池大小预设模块,用于基于cpu的数量预设线程池大小;csv文件集合分组模块,用于根据预设的拆分策略,对所述csv文件集合进行分组;分组后的csv文件集合提交模块,用于将分组后的csv文件集合提交至线程池;分组后的csv文件集合解析模块,用于通过线程池中的每个线程对分组后的csv文件集合进行解析,得到解析数据集合;解析数据封装模块,用于遍历解析数据集合,将每行数据封装成目标数据库对应的java对象;java对象存入模块,用于将java对象批量存入目标数据库。

    9、根据本公开的第三方面,提供了一种csv格式文件解析装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令,执行如上述的csv格式文件解析方法。

    10、根据本公开的第四方面,提供了一种计算机可存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现如上述的csv格式文件解析方法。

    11、本公开的有益效果:本公开采取异步多线程方式处理导入的大数据量的csv格式文件,提升了导入的性能,缩短了导入的时间,提升了用户体验。



    技术特征:

    1.一种csv格式文件解析方法,其特征在于,所述方法包括:

    2.根据权利要求1所述的csv格式文件解析方法,其特征在于,所述基于cpu的数量预设线程池大小,包括:

    3.根据权利要求1所述的csv格式文件解析方法,其特征在于,所述根据预设的拆分策略,对所述csv文件集合进行分组,包括:

    4.根据权利要求1所述的csv格式文件解析方法,其特征在于,所述线程池中的每个线程对分组后的csv文件集合进行解析,包括:

    5.根据权利要求1所述的csv格式文件解析方法,其特征在于,

    6.根据权利要求1所述的csv格式文件解析方法,其特征在于,

    7.一种 csv格式文件解析装置,其特征在于,所述装置包括:

    8.一种csv格式文件解析装置,其特征在于,包括:

    9.一种计算机可存储介质,其特征在于,其上存储有计算机程序指令,该指令被处理器执行时实现如权利要求1至6任一项所述的csv格式文件解析方法。


    技术总结
    本公开涉及一种CSV格式文件解析方法、装置及介质,属于数据解析技术领域。该方法包括:获取待处理的CSV文件集合;基于CPU的数量预设线程池大小;根据预设的拆分策略,对所述CSV文件集合进行分组;将分组后的CSV文件集合提交至线程池;通过线程池中的每个线程对分组后的CSV文件集合进行解析,得到解析数据集合;遍历解析数据集合,将每行数据封装成目标数据库对应的java对象;将java对象批量存入目标数据库。

    技术研发人员:王刚,束照坤,赵以磊
    受保护的技术使用者:安徽江淮汽车集团股份有限公司
    技术研发日:
    技术公布日:2024/11/26
    转载请注明原文地址:https://tc.8miu.com/read-27028.html

    最新回复(0)