掌桥专利:专业的专利平台
掌桥专利
首页

一种数据转换方法、装置、设备及存储介质

文献发布时间:2023-06-19 19:28:50


一种数据转换方法、装置、设备及存储介质

技术领域

本发明涉及数据处理技术领域,特别涉及一种数据转换方法、装置、设备及存储介质。

背景技术

在现有技术中,项目同步数据库与接口参数调用时,通常会遇到文件或者图片类型的数据。现有技术中,通常都需要先生成文件,即将文件下载然后创建临时文件夹,在使用完之后将文件夹再删除,这样是的数据转换及同步的流程特别复杂且安全性低,且对于数据同步而言,缺乏文件类型格式转换机制,只能单一同步数据库固有的数据类型,对于接口参数中包含文件类型数据时,直接传递file文件,也降低了数据质量和安全性。

因此,如何实现数据快速转换、提高数据可移植性、安全性是本领域技术人员亟待解决的技术问题。

发明内容

有鉴于此,本发明的目的在于提供一种数据转换方法、装置、设备及存储介质,能够实现数据快速转换、提高数据可移植性、安全性。其具体方案如下:

本发明的第一方面提供了一种数据转换方法,包括:

读取目标数据对象,根据所述目标数据对象查询关联表,获得文件信息表标识;

根据文件信息表标识查询文件信息表,所述文件信息表包括文件绝对路径;

创建通信连接对象,将所述文件绝对路径放入所述通信连接对象,设置连接属性,根据所述通信连接对象获取输入流;

通过所述输入流读取文件的二进制数据,将所述二进制数据转换为字符串。

可选的,所述目标数据对象的主键是关联表的第一外键,所述文件信息表的主键是所述关联表的第二外键。

可选的,所述创建通信连接对象,将所述文件绝对路径放入所述通信连接对象,设置连接属性,根据所述通信连接对象获取输入流,具体为,

定义通信连接对象参数,读取文件绝对路径作为通信连接对象参数统一资源定位系统地址参数,设置读取参数、连接参数、调用方式,完成通信连接对象的创建;

在所述通信连接对象创建完成之后,通过调用输入流的方式获得输入流。

可选的,所述通过所述输入流读取文件的二进制数据,具体为,

创建字节数组输出流,创建缓冲区,以循环方式读取所述输入流至所述缓冲区,将所述缓冲区内容写入输出流,获取输出流的数据并转换为数组,所述数组为文件的二进制数据数组,关闭输入流和操作流。

可选的,将所述关联表关联所述字符串以便在动态表单数据库中存储字符串地址。

可选的,根据在动态表单数据库中存储字符串地址将字符串解析成图片展示至客户端。

可选的,在将所述二进制数据转换为字符串后还包括,同步所述目标数据对象以及关联表至动态表单数据库,所述关联表关联所述字符串;或获得字符串集合,将所述字符串集合赋值至调用参数,将所述调用参数JSON格式化,调用接口提交。

本发明的第二方面提供了一种数据转换装置,包括:

数据获取模块,用于读取目标数据对象,根据所述目标数据对象查询关联表,获得文件信息表标识;

查询模块,用于根据文件信息表标识查询文件信息表,所述文件信息表包括文件绝对路径;

输入流获取模块,创建通信连接对象,将所述文件绝对路径放入所述通信连接对象,设置连接属性,根据所述通信连接对象获取输入流;

转换模块,用于通过所述输入流读取文件的二进制数据,将所述二进制数据转换为字符串。

本发明的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述数据转换方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述数据转换方法。

本发明提出了一种数据转换方法、装置、设备及存储介质,读取目标数据对象,根据所述目标数据对象查询关联表,获得文件信息表标识,根据文件信息表标识查询包含文件绝对路径的文件信息表,创建通信连接对象,将文件绝对路径放入所述通信连接对象,设置连接属性,根据所述通信连接对象获取输入流,通过所述输入流读取文件的二进制数据,将所述二进制数据转换为字符串,同步所述目标数据对象以及关联表至动态表单数据库,并关联字符串。本发明使用通信连接对象的方式省去了生成文件、下载文件的过程,降低了内存的使用率、代码量并提高了系统处理性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明提供的一种数据转换方法流程图;

图2为本发明提供的一种数据转换系统结构框图;

图3为本发明提供的一种电子设备20的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

现有技术中,在项目研发的过程中经常需要进行数据同步,而对于数据同步来说,现有技术多为单一同步数据库固有数据类型转换,缺乏文件类型的转换机制,导致转换非常麻烦且效率低。对于接口参数中包含文件类型数据时,现有技术一般会直接传递file文件,而这种方式也给系统带来了安全性问题,降低了数据质量和安全性。基于此,本发明提出了一种数据转换方法,针对文件绝对路径,使用通信连接对象方式,快速转换Base64格式,省略了文件下载和创建临时文件夹的步骤,减少了内存使用,提高了效率,同时提高数据同步的安全性、可移植性,增强了数据间的强关联,使数据查询更加便捷。

图1为本发明实施例提供的一种数据转换方法流程图。参见图1所示,该数据转换方法包括:

S101,读取目标数据对象,根据所述目标数据对象查询关联表,获得文件信息表标识。

本实施例中,从目标业务数据库中读取目标数据对象,目标业务数据库可以是CRM系统数据库,该目标业务数据库是关系型数据库;具体地,例如在本实施例中,从目标业务数据库中通过数据库查询命令查询并获取目标数据对象,所述目标数据对象可以为施工单(施工单也是数据库表),在数据库中施工单可以包括但不限于以下字段id、order_no工单编号、group_id企业id、coustomer_id客户id、coustomer_name客户名称、usercode用户编码、user_name用户姓名、delivery_after_code售后编码、delivery_after_name售后姓名、service_order_type服务订单类型。

具体地,施工单表可以是包括如下字段的数据库表:

本实施例中,根据所述目标查询对象施工单,以目标查询对象的施工单id或者施工单订单id作为查询条件查询施工单文件关联表,例如service_order_id=2000,以此作为查询条件,查询施工单订单id为2000的关联表。通常情况下,所述关联表可以是施工单文件关联表,可以包括id、type类型、service_order_id施工单id、attachment_id文件信息表id、project_id项目id、platform_code接单平台编码字段等。

具体地,施工单文件关联表(关联表)可以是包括如下字段的数据库表:

具体地,文件信息表可以是包括如下字段的数据库表:

需要说的是,表之间的关联关系通过外键实现,目标数据对象表的主键id关联施工单文件关联表外键service_order_id施工单id,施工单文件关联表的attachment_id文件信息表id是该表的外键,该外键关联文件信息表主键id。

S102,根据文件信息表标识查询文件信息表,所述文件信息表包括文件绝对路径。

本实施例中,在文件信息表中,文件对象主键id为所述关联表的外键attachment_id。在文件信息表中,还包括filename文件名、fileurl文件绝对路径、filetype、suffix、size、fullname等。所述fileurl文件绝对路径可以是云端地址,也可以是本地服务器地址。

S103,创建通信连接对象,将所述文件绝对路径放入所述通信连接对象,设置连接属性,根据所述通信连接对象获取输入流。

在本实施例中,在获取到fileurl文件绝对路径之后,创建通信连接对象(httpURLConnection),并设置连接属性,连接属性包括连接参数、调用方式等,根据所述通信连接对象获取输入流。

具体地,创建通信连接对象httpURLConnection的过程为,定义对象参数connection为httpURLConnection类型的对象,读取fileurl文件绝对路径作为通信连接对象connection统一资源定位系统地址参数,设置读取参数、连接参数、调用方式等,此时类型为httpURLConnection的通信连接对象connection即完成创建并能够获得输入流。在所述通信连接对象connection创建完成之后,其即能通过调用输入流的方式(例如getInputStream)直接获得输入流inputStream。

需要强调的是,本发明通过创建通信连接对象,根据所述通信连接对象获取输入流,然后对输入流进行处理,省去了现有技术生产文件、下载文件到本地的存储过程以及创建临时文件夹以及删除临时文件夹的复杂过程操作。本发明使用通信连接对象的方式降低了内存的使用率并提高了系统处理性能。

S104,通过所述输入流读取文件的二进制数据,将所述二进制数据转换为字符串。

在本实施例中,在具体实现读取文件的二进制(byte流)数据时,首先创建字节数组输出流outStream;然后创建缓冲区,所述缓冲区的字节数可以设置为1024或者1024的整数倍;以循环方式读取所述输入流至所述缓冲区,将缓冲区内容写入输出流,获取输出流的全部数据并转换为数组,此时获得的数组即为文件的二进制数据数组。在获取到二进制数据之后关闭输入流和操作流。

在本实施例中,在获得了二进制数据之后将所述二进制数据转换为Base64字符串,以便于在后续步骤中进行数据处理。

S105,同步所述目标数据对象以及关联表至动态表单数据库,所述关联表关联所述字符串。

在本实施例中,在获得所述Base64字符串之后,进一步需要同步至动态表单数据库,所述动态表单数据库不同于前述CRM系统数据库。具体地,首先,同步施工单表(在本实施例中,施工单表可以理解为主表),即对应于CRM系统数据库的目标数据对象;然后,同步关联表(在本实施例中,关联表为中间表),即对应于CRM系统数据库的施工单文件关联表,将所述关联表关联所述Base64字符串,即在本步骤中所述关联表除具有前述字段外还包括有base64_message字段,用于存储Base64字符串的地址以关联所述Base64字符串,该Base64字符串可以解析成图片并可用于展示至前端(客户端),以便于减少文件表的数量。

在本实施例中,动态表单数据库中关联了所述Base64字符串的施工单文件关联表可以是包括如下字段的数据库表。

上述数据库表还可以增加file_name字段存储文件名。

需要说明的是,上述通过创建通信连接对象,利用输入流获得的Base64字符串是对图片等数据库无法直接存储的数据的转换存储方法。在本发明进行数据同步时,例如对id、type等数据库中具有的类型的数据同步时,具体实现方式为(以施工单为例):

首先,新建动态表单数据库施工单同步表,order为crm表施工单表;

FsFieldServiceOrder1 serviceOrder=new FsFieldServiceOrder1();

第二步,复制施工单数据;

BeanUtils.copyProperties(order,serviceOrder);

FsFieldServiceOrderService1.save(serviceOrder);

第三步,同步施工单文件关联表;

ListattachmentList1=Lists.newArrayList();

第四步,遍历CRM数据库施工单文件关联表;获取文件base64字符串;赋值文件Base64字符串;

for(FsFieldServiceAttachment serviceAttachment:attachmentList){

FsFieldServiceAttachment1 attachment1=new FsFieldServiceAttachment1();

BeanUtils.copyProperties(serviceAttachment,attachment1);

String base64String=getBase64String(serviceAttachment.getId());

attachment1.setBase64Message(Base64Messagebase64String);

attachmentList1.add(attachment1);

}

最后,新增动态表单数据库施工单文件关联表,并保存Base64字符串数据;

FsFieldServiceAttachmentService1.saveBatch(attachmentList1)。

另外,需要说明的是,在转换获得Base64字符串之后,除了能够执行S105的同步操作,还可以直接执行接口调用。

S106,获得字符串集合,将所述字符串集合赋值至调用参数,将所述调用参数JSON格式化,调用接口提交。

调用接口时,获取所述Base64字符串以集合方式存储获得Base64字符串集合,将所述Base64字符串集合赋值到调用参数中,将所述调用参数JSON格式化,调用接口提交供客户端调用并获取数据展示。具体代码如下所示:

Listbase64StringList=getFileBase64String(order.getId());

params.put("base64file",base64StringList);

String toJSONString=JSON.toJSONString(params);

HttpClientUtil.doPost("ttp://test.wistore.net/ovopark-organize/departments",map,toJSONString)。

需要说明的是,在本发明中,S105和S106是并列的技术方案。

需要强调的是,在本发明的技术方案中,目标数据对象含有文件类型数据时,转换Base64编码格式,既能保证数据传递的质量,也能直接关联主体数据和文件,客户端展示时,只需解析即可;调用第三方接口时,也能提高数据的安全性。通过通信连接对象的方式,转换文件对象的Base64格式,省略了中间创建临时文件夹和下载的步骤,既减轻了内存的压力,也减少了代码的步骤,提高了这一数据类型的使用有效性和查询便捷性。

参见图2所示,本发明实施例还相应公开了一种数据转换装置,包括:

数据获取模块,用于读取目标数据对象,根据所述目标数据对象查询关联表,获得文件信息表标识;

查询模块,用于根据文件信息表标识查询文件信息表,所述文件信息表包括文件绝对路径;

输入流获取模块,创建通信连接对象,将所述文件绝对路径放入所述通信连接对象,设置连接属性,根据所述通信连接对象获取输入流;

转换模块,用于通过所述输入流读取文件的二进制数据,将所述二进制数据转换为字符串;

同步模块,用于同步所述目标数据对象以及关联表至动态表单数据库,所述关联表关联所述字符串。

在其他实施例中,数据转换装置还可以包括与同步模块并列的接口调用模块。

接口调用模块,用于将所述字符串集合赋值至调用参数,将所述调用参数JSON格式化,调用接口提交。

进一步的,本发明实施例还提供了一种电子设备。图3是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本发明的使用范围的任何限制。

图3为本发明实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的数据转换方法中的相关步骤。

本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本发明技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。

另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。

其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的数据转换方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子设备20收集到的控件相关数据。

进一步的,本发明实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的数据转换方法步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本发明提出了一种数据转换方法、装置、设备及存储介质,读取目标数据对象,根据所述目标数据对象查询关联表,获得文件信息表标识,根据文件信息表标识查询包含文件绝对路径的文件信息表,创建通信连接对象,将文件绝对路径放入所述通信连接对象,设置连接属性,根据所述通信连接对象获取输入流,通过所述输入流读取文件的二进制数据,将所述二进制数据转换为字符串,同步所述目标数据对象以及关联表至动态表单数据库,并关联字符串。本发明使用通信连接对象的方式省去了生成文件、下载文件的过程,降低了内存的使用率、代码量并提高了系统处理性能。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的数据转换方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术分类

06120115927068