本发明涉及数据处理,尤其涉及一种数据读取方法、装置、存储介质、电子设备及产品。
背景技术:
1、pring batch作为一款工业级的批处理框架,完全由java语言实现,由于其出色的性能、使用简单、功能强大等特点,深受广大开发者的青睐。
2、pring batch框架定义了三个父接口,分别是itemreader:(读操作的父接口)、itemprocessor(处理数据的父接口)、itemwriterr(写数据的父接口)。第一步是读取数据,可以从数据库读取数据,从文件中读取数据,也可以从kafka、mq等中间件读取数据;第二步是处理数据,即把读取的数据进行业务处理或逻辑加工;第三步是写数据,把处理后的数据写入到数据库或文件中或其他介质中。
3、其中,数据处理和写操作,业务性比较强,具体的批需要具体的处理。对于读操作,针对不同格式的数据文件,在每一次读取时都需要单独写一次init方法,存在配置操作繁琐的问题。
技术实现思路
1、本发明提供了一种数据读取方法、装置、存储介质、电子设备及产品,实现对不同格式的数据文件的统一读取,简化数据读取过程的配置操作。
2、根据本发明的一方面,提供了一种数据读取方法,其特征在于,包括:
3、接收读取实现类,所述读取实现类中包括文件类型标识、文件路径和注解类,所述注解类中包括接收数据的实体属性信息,所述实体属性信息中至少包括接收数据实体和所述接收数据实体的顺序;
4、调用封装类,所述封装类中包括第一接口实现类和第二接口实现类,所述第一接口实现类中包括多种文件类型对应的解析类;
5、基于所述读取实现类中的文件类型标识确定所述文件类型标识对应的目标解析类,基于所述目标解析类从所述文件路径对应的数据文件中读取数据;
6、基于所述第二接口实现类将读取的数据映射到所述注解类中的接收数据实体,得到各所述接收数据实体对应的数据内容,其中,在映射过程中,所述数据的读取顺序和所述接收数据实体的顺序相匹配。
7、可选的,所述文件类型包括如下的一项或多项:json类型、定长格式类型、分隔符格式类型。
8、可选的,在所述文件类型为定长格式类型的情况下,所述注解类还包括每一接收数据实体对应的字节长度;在所述文件类型为分隔符格式类型的情况下,所述注解类还包括分隔符类型。
9、可选的,所述注解类中还包括至少局部的所述接收数据实体对应的格式信息;
10、在基于所述目标解析类从所述文件路径对应的数据文件中读取数据之后,还包括:基于反射方法获取所述注解类中的接收数据实体,基于所述接收数据实体对应的格式信息对接收的数据内容进行格式转换。
11、可选的,所述数据文件中包括多个行数据,所述行数据包括至少一个列,同一所述列包含的数据内容对应同一接收数据实体;
12、所述基于所述目标解析类从所述文件路径对应的数据文件中读取数据,包括:基于所述目标解析类从所述数据文件中依次读取每一行数据,得到所述行数据中的多个数据内容。
13、可选的,所述基于所述目标解析类从所述文件路径对应的数据文件中读取数据,包括:在所述文件类型为json类型的情况下,基于所述json类型对应的解析类读取所述数据文件中每一行数据的多个数据内容。
14、可选的,所述基于所述目标解析类从所述文件路径对应的数据文件中读取数据,包括:在所述文件类型为定长格式类型的情况下,将所述接收数据实体对应的字节长度按所述接收数据实体的顺序赋值给所述定长格式类型对应的解析类,基于所述定长格式类型对应的解析类基于所述数据实体对应的字节长度依次读取所述数据文件中每一行数据的多个数据内容。
15、可选的,所述基于所述目标解析类从所述文件路径对应的数据文件中读取数据,包括:在所述文件类型为分隔符格式类型的情况下,将所述分隔符类型赋值给所述分隔符格式类型对应的解析类,基于所述分隔符格式类型对应的解析类识别所述数据文件中每一行数据中的分隔符,并读取被所述分隔符间隔的多个数据内容。
16、可选的,所述基于所述第二接口实现类将读取的数据映射到所述注解类中的接收数据实体,得到各所述接收数据实体对应的数据内容,包括:
17、在所述文件类型为json类型的情况下,基于第一方法将读取的数据赋值给对应的接收数据实体;在所述文件类型为定长格式类型的或者分隔符格式类型的情况下,按所述接收数据实体的顺序赋值给名称设置方法,基于所述名称设置方法对接收的数据和所述接收数据实体建联映射关系。
18、可选的,在基于所述目标解析类从所述文件路径对应的数据文件中读取数据之前,还包括:
19、定义一属性列表;解析所述注解类,得到所述注解类中的多个接收数据实体;将所述接收数据实体按所述接收数据实体的顺序添加到所述属性列表中,所述属性列表中的接收数据实体用于赋值给所述名称设置方法。
20、可选的,所述json类型的解析类包括jsonlinetokenizer类;定长格式类型的解析类包括myfixedlengthtokenizer类;分隔符格式类型的解析类包括delimitedlinetokenizer类;所述第二接口实现类包括mybeanwrapperfieldsetmapper类,继承自beanwrapperfieldsetmapper类。
21、根据本发明的一方面,提供了一种数据读取装置,包括:
22、实现类接收模块,用于接收读取实现类,所述读取实现类中包括文件类型标识、文件路径和注解类,所述注解类中包括接收数据的实体属性信息,所述实体属性信息中至少包括接收数据实体和所述接收数据实体的顺序;
23、封装类调用模块,用于调用封装类,所述封装类中包括第一接口实现类和第二接口实现类,所述第一接口实现类中包括多种文件类型对应的解析类;
24、数据读取模块,用于基于所述读取实现类中的文件类型标识确定所述文件类型标识对应的目标解析类,基于所述目标解析类从所述文件路径对应的数据文件中读取数据;
25、数据映射模块,用于基于所述第二接口实现类将读取的数据映射到所述注解类中的接收数据实体,得到各所述接收数据实体对应的数据内容。
26、根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
27、至少一个处理器;以及
28、与所述至少一个处理器通信连接的存储器;其中,
29、所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的数据读取方法。
30、根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的数据读取方法。
31、根据本发明的另一方面,提供了一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序在被处理器执行时实现本发明任一实施例所述的数据读取方法。
32、本发明实施例的技术方案,通过在spring batch框架的基础上进行优化,基于二次封装的形式设置封装类flatfileitemreader类,在该封装类中包括能够对不同文件类型进行数据解析的多个解析类,以及能够进行数据映射的第二接口实现类,实现基于一封装类对不同类型文件执行数据读取操作。在设置封装类的基础上,简化了执行数据读取操作的配置信息,通过读取实现类替代了针对每一文件的init代码的编写,只需要对文件类型标识、文件路径和注解类进行编写即可,做到了和业务代码的完全隔离,实现与业务逻辑的解耦,降低了数据读取操作的处理难度和对操作用户的依赖。
33、应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
1.一种数据读取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述文件类型包括如下的一项或多项:json类型、定长格式类型、分隔符格式类型。
3.根据权利要求2所述的方法,其特征在于,在所述文件类型为定长格式类型的情况下,所述注解类还包括每一接收数据实体对应的字节长度;
4.根据权利要求1所述的方法,其特征在于,所述注解类中还包括至少局部的所述接收数据实体对应的格式信息;
5.根据权利要求1所述的方法,其特征在于,所述数据文件中包括多个行数据,所述行数据包括至少一个列,同一所述列包含的数据内容对应同一接收数据实体;
6.根据权利要求1所述的方法,其特征在于,所述基于所述目标解析类从所述文件路径对应的数据文件中读取数据,包括:
7.根据权利要求1所述的方法,其特征在于,所述基于所述目标解析类从所述文件路径对应的数据文件中读取数据,包括:
8.根据权利要求1所述的方法,其特征在于,所述基于所述目标解析类从所述文件路径对应的数据文件中读取数据,包括:
9.根据权利要求1所述的方法,其特征在于,所述基于所述第二接口实现类将读取的数据映射到所述注解类中的接收数据实体,得到各所述接收数据实体对应的数据内容,包括:
10.根据权利要求9所述的方法,其特征在于,在基于所述目标解析类从所述文件路径对应的数据文件中读取数据之前,还包括:
11.根据权利要求2所述的方法,其特征在于,
12.一种数据读取装置,其特征在于,包括:
13.一种电子设备,其特征在于,所述电子设备包括:
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-11中任一项所述的数据读取方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-11中任一项所述的数据读取方法。