具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如前所述,当业务提供方在录入用户数据的过程中,将通常会以数据表的形式存储用户数据,并且,业务提供方往往会按照自身所定义的格式(如:数据表结构、日期格式、文本格式等等)存储用户数据。但不同用户所提供的用户数据具有不同的格式,换言之,用户数据与业务提供方所定义的格式存在格式上的异构。在此情况下,业务提供方通常会采用人工操作的方式,将用户数据的格式转换成相应的数据格式。显然,这样的方式效率较低,尤其是面对大量用户数据的情况下,人工操作的耗时较长,且容易出错。
基于此,就需要一种非人工方式将异构的用户数据按照业务提供方所定义的格式进行存储的方法。故在本申请实施例中,提供一种异构数据的处理方法,如图1所示,以实现自动且高效地将不同异构的用户数据按照设定格式进行存储。
需要说明的是,本申请实施例中所述的业务提供方可以是能够提供在线业务的业务提供方,诸如:网站、电信运营商、银行等。具体地,执行所述方法的执行主体,可以是业务提供方的服务器(为了便于描述,下文中简称为:服务器),诸如:网站服务器、电信运营商服务器、银行服务器等,这里并不构成对本申请的限定。
以下结合附图,详细说明本申请各实施例提供的技术方案。
如图1所示,示出了本申请实施中的异构数据的处理过程,该过程具体包括以下步骤:
S101:接收用户发送的用户数据文件。
在实际应用中,当用户想要获得由业务提供方所提供的相应业务时,就会向业务提供方发送该用户自身的用户数据,并以文件的方式发送给服务器。
在本申请实施例中,用户数据可以是一种关系型数据,如:键(key)-值(value)方式的数据,那么,作为本申请实施例中的一种方式,所述的用户数据文件,可包括但不限于:逗号分隔值(Comma-Separated Values,CSV)文件、Excel文件等用于存储关系型数据的文件。
当然,在本申请实施例中,用户可以是个人用户,也可以是企业用户。当用户为个人用户时,其用户数据可以是反映该用户个人信息的数据(诸如:姓名、身份证号等);而当用户为企业用户时,其用户数据可以是企业内部的员工数据(诸如:各员工的姓名、身份证号等)。
S102:确定所述用户数据文件中用户数据的键,以及各键所对应的键值。
关系型数据中包含键和相应的键值,故服务器在接收到用户数据文件后,便可以确定出用户数据文件中的键和键值。可以认为,通过本步骤确定键和键值的过程,也就确定了用户数据文件中的表结构,以便后续过程构建符合业务提供方的数据表,以存储用户数据。
另需要说明的是,本步骤中的确定过程,也包含确定键值类型的过程。具体而言,在实际应用中,对于CSV文件格式或Excel文件格式的用户数据文件而言,均将其中的具体数据(即,键值)的类型定义为字符串,而不区分日期、数字、文本等类型的数据,从而,现有技术中只能通过人工的方式辨别数据的类型,完成数据的转换。那么,通过本步骤,也就可以确定出各键值的数据类型。
S103:根据所述键名及其对应的键值创建数据表。
考虑到实际应用中,业务提供方将以数据表的方式存储用户数据,所以在本申请实施例中,服务器将针对用户数据文件创建数据表,以便于存储用户数据文件中的用户数据。
当然,可以认为,在确定了用户数据文件中键和键值后,也就确定了数据表所需的列数和行数,故可以根据键和键值创建数据表。
S104:将确定出的所述键及其键值转换为标定的数据格式,并将转换后的键和键值存储于所述数据表中。
在本申请实施例中,对键和键值的转换过程,包括对数据类型的转换,例如:针对表征日期的字符串,将其转换成日期格式的数据;针对数字字符串,将其转换为数字格式等。
具体来说,以日期数据为例:假设,某用户数据文件中的表征日期的字符串均为“XX日XX月XXXX年”,而业务提供方所要求的日期数据的格式为“YY-MM-DD(该日期格式表示:年-月-日)”,显然,在该示例中,用户数据文件中的表征日期的字符串的格式并不符合业务提供方所要求的日期数据格式。故,当服务器在将上例中的日期数据存储在创建的数据表中时,就会按照“YY-MM-DD”的格式进行存储。
当然,上述示例仅是以日期格式为例进行的说明,在实际应用中,服务器会针对用户数据文件中的各类数据转换为符合业务提供方所需的数据格式。
通过上述步骤,业务提供方的服务器会针对接收到的用户数据文件,确定出其中的键和键值,并依据此建立数据表,在将用户数据文件中的数据转换成标定的数据格式,并存储在建立的数据表中。相较于现有技术而言,本申请中的上述方法可以将原本在用户数据文件中以字符串类型存储的数据,转换为相应类型的数据存储在数据表中,而不需要借助人工操作完成数据的转换。既提升了对异构数据的处理效率,也保证了处理结果的准确性。
为了清楚地说明上述方法,下面以用户数据文件为Excel文件的应用场景进行说明。
当服务器接收到用户发送的Excel文件后,为了根据该Excel文件生成对应的数据表,就需要确定出该Excel文件的表结构,进一步地,要确定出Excel文件的表结构,首先需确定出该Excel文件中包含的键。
具体而言,在本申请实施例中,确定所述用户数据中包含的键,具体包括:获取所述用户数据文件中的首行用户数据,识别所述首行用户数据中包含的分隔的各数据,将分隔的每一数据作为所述用户数据的每一键。
这里需要说明的是,实际应用中,Excel文件通常是以若干数据列构成数据表,可以认为,Excel文件中以键分列,每一数据列中具体的数据,就是该键所对应的不同键值。换言之,Excel文件中的首行数据是各列的列名(列名就可认为是键)。而不同的列名之间是分隔的,所以,将分隔的每个列名作为用户数据的每一键。
另外,考虑到实际应用中,由于不同用户所提供的Excel文件时,使用各自的数据格式,并不具有统一的标准,那么,Excel文件中的数据就有可能存在缺失、多余等情况,进而影响业务提供方对数据的存储(如:Excel文件中缺失一列数据,显然,会导致业务提供方的数据表不完整)。
基于上述情况,业务提供方就会在创建数据表之前,对Excel文件中的数据进行校验,具体而言,前述如图1所示的方法中,在根据所述键及其对应的键值创建数据表之前,所述方法还包括:检验所述键及其对应的键值的列数相同;和/或,检验所述键的数量与标定的键数相同;和/或,检验所述键值中不存在空值。
具体来说,上述校验的第一种情况(键及其对应的键值的列数):
针对该情况,在实际应用中,Excel文件中的键及其键值可能会存在缺失的情况,如下表1所示。
姓名 |
用户ID |
|
张三 |
A11 |
1997-3-20 |
李四 |
B13 |
1980-9-09 |
表1
从表1中可见,第三列中缺少键名,也即,整个表中的键与键值的列数并不对应,显然,在这样的情况下,服务器并不能确定出第三列数据的键,换言之,也就不能够建立相应的数据表以存储表1中的数据。
故,针对第一种情况,服务器会校验键及其对应的键值的列数相同。
上述校验的第二种情况(检验所述键的数量与标定的键数相同):
针对该情况,实际应用中,业务提供方可能会要求用户若干项用户数据,每一项数据就对应一个键,所以,对于业务提供方而言,就标定了键的数量(即,所要求的用户数据的项数),基于此,如果用户所提供的用户数据的键的数量,超过或者少于标定的键数量,都会导致服务器难以构建出符合规定的数据表(因为,如果用户数据的键的数量少于标定键的数量,就表明数据列缺失;如果用户数据的键的数量少于标定键的数量,就表明数据列过多)。
故,针对第二种情况,服务器会检验所述键的数量与标定的键数相同。
上述校验的第三种情况(检验所述键值中不存在空值):
在该情况下,如表2所示,键值可能存在空值(即,数据缺失)。
姓名 |
用户ID |
出生日期 |
张三 |
A11 |
|
李四 |
B13 |
|
表2
显然,在表2中,第三列的数据缺失(即,“出生日期”这一键所对应的键值为空值),这就会影响用户数据的完整性。
故,针对第三种情况,服务器会检验键值中不存在空值。
结合上述内容,在实际应用中,如果服务器校验不通过,就会向用户发出错误通知,以使得用户对其Excel文件中的用户数据进行修正。而只有在校验通过之后,服务器才会根据键及其键值创建数据表。
具体地,根据所述键及其对应的键值创建数据表,具体包括:根据所述键及其键值,确定所述Excel对应的表结构,根据所述表结构创建数据表,并为所述数据表的命名。
为所述数据表的命名,具体包括:确定所述Excel文件的文件名,将所述文件名确定为所述数据表的表名。
在根据所述键及其对应的键值创建数据表之前,所述方法还包括:根据所述Excel文件的文件名,查询已创建的所有数据表的表名,当查询到表名与所述文件名一致的数据表时,将所述键及其键值按照设定的数据格式存储至该数据表中。
在创建了数据表之后,服务器便会将Excel文件中的用户数据进行解析,并以标定的数据格式存储在该数据表中。具体地,将确定出的所述键值转换为标定的数据格式,具体包括:将所述键值按照不同的数据类型进行强制转换,将强制转换得到的转换结果的数据格式作为该键值的标定的数据格式。
其中,所述数据类型包括:日期字符串、数字字符串、文本字符串。
正如前述,对于Excel文件而言,其中的数据的类型均是字符串,也即,服务器并不能确定出Excel文件中的数据是日期、数字或是文本,故在本申请实施例中,服务器会对Excel文件中的数据(键值)进行强制转换。
如果能将数据强制转换为日期,那么,就表明该数据原本就是一种表征日期的数据。
例如:Excel文件中的包含有“20141211”的字符串,服务器在对该字符串进行强制转换的过程中,会使用预先保存的与日期相关的正则表达式转换该字符串,那么,服务器将可以确定:“2014”这四位数字满足年份的数字表达;“12”满足月份的数字表达,同时,这两位数字未超过12(可以理解,月份的最大值不超过12);“11”满足天数的数字表达,同时,这两位数字未超过31(可以理解,自然月中天数的最大值不超过31)。因此,服务器会将Excel文件中的上述字符串,转换为日期字符串,并使用业务提供方所定义的日期格式。
相类似地,如果能将数据强制转换为数字(或浮点数),那么,就表明该数据原本就是一种表征数字(或浮点数)的数据。
如果某数据既不能转换成日期,也不能转换成数据,那么,就可以认为该数据为文本数据,从而将该数据转换成文本字符串。
以上方式是对强制转换过程中,不同数据类型的说明,并不构成对本申请的限定。
本申请中的上述方法可以适用于实际应用中,业务提供方录入企业用户的人员信息(即,企业用户的用户数据)的场景。在本实际应用场景下,企业用户并不直接将用户数据发送给业务提供方的服务器,而是将用户数据发送给文件中转服务器,后续由业务提供方服务器从文件中转服务器中获取用户数据。并假设在本场景下,业务提供方服务器内部包含相应的数据库。
本申请实施例提供一种异构数据的处理方法,如图2所示。在图2中,文件中转服务器可以是具有安全文件传输协议(Secure File Transfer Protocol,SFTP)功能的服务器(以下简称为:SFTP服务器)。
具体地,图2中的方法具体包括如下步骤:
S201:企业用户将包含人员信息的Excel文件发送给SFTP服务器。
S202:业务提供方服务器从SFTP服务器中获取Excel文件。
S203:业务提供方服务器解析Excel文件中的表结构。
S204:根据表结构创建数据表。
S205:解析Excel文件中的人员信息,并将人员信息转换为标定的数据格式,存储在创建的数据表中。
以上为本申请实施例提供的异构数据的处理方法,基于同样的思路,本申请实施例还提供一种异构数据的处理装置。
如图3所示,异构数据的处理装置,设置于业务提供方的服务器侧,该装置包括:
接收模块301,接收用户发送的用户数据文件;
确定模块302,确定所述用户数据文件中用户数据的键,以及各键所对应的键值;
创建模块303,根据所述键及其对应的键值创建数据表;
转换模块304,将确定出的所述键及其键值转换为标定的数据格式,并将转换后的键和键值存储于所述数据表中。
本申请实施例中的一种场景下,所述用户数据文件包括Excel文件。
所述确定模块302,获取所述Excel文件中的首行用户数据,识别所述首行用户数据中包含的分隔的各数据,将分隔的每一数据作为所述用户数据的每一键。
所述装置还包括:校验模块305,检验所述键及其对应的键值的列数相同;和/或检验所述键的数量与标定的键数相同;和/或检验所述键值中不存在空值。
所述转换模块304,将所述键值按照不同的数据类型进行强制转换,将强制转换得到的转换结果的数据格式作为该键值的标定的数据格式;
其中,所述数据类型包括:日期字符串、数字字符串、文本字符串。
所述创建模块303,根据所述键及其键值,确定所述Excel对应的表结构,根据所述表结构创建数据表,并为所述数据表的命名。
所述创建模块303,确定所述Excel文件的文件名,将所述文件名确定为所述数据表的表名。
所述装置还包括:查询处理模块306,根据所述Excel文件的文件名,查询已创建的所有数据表的表名,当查询到表名与所述文件名一致的数据表时,将所述键及其键值按照设定的数据格式存储至该数据表中。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。