发明内容
本申请实施例提供了一种基于数据库的文件差异数据的获取方法、装置及电子设备,用于解决现有技术中在文件较大、明细数据无序的情况下,机器内存可能太小,无法全部运行时存储所有的文件数据,从而不能有效的进行大文件的明细差异比较的问题。
为解决上述技术问题,本申请实施例是这样实现的:
一种基于数据库的文件差异数据的获取方法,包括:基于第一文件和第二文件,获取第一文件数据表和第二文件数据表;根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表的数据组;根据确定的数据组查找差异数据,并标记相应数据组的状态字段;根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别。
进一步,根据确定的数据组查找差异数据,并标记相应数据组的状态字段前,还包括:通过数据库索引选取第一文件数据表和第二文件数据表的指定数据组,并作为查找的目标文件数据表。
进一步,根据确定的数据组查找差异数据,并标记相应数据组的状态字段,具体包括:根据确定的数据组,通过SQL语句查找差异数据,并标记每组数据组的状态字段。
进一步,根据确定的数据组查找差异数据,并标记相应数据组的状态字段,具体包括:对第一文件数据表和第二文件表的数据组进行比对,查找第一文件数据表和第二文件数据表相同的数据组,更新第一文件数据表和第二文件数据表中相应数据组的状态字段为一致数据;查找第一文件数据表有第二文件数据表无的数据组,更新第一文件数据表中相应数据组的状态字段为第一文件有第二文件无数据;查找第二文件数据表有第一文件数据表无的数据组,更新第二文件数据表中相应数据组的状态字段为第一文件无第二文件有数据;更新第一文件数据表和第二文件数据表中数据为空的状态字段为不一致数据。
进一步,基于第一文件和第二文件,获取第一文件数据表和第二文件数据表,包括:分别依次逐行读取第一文件和第二文件的数据,并存储至同一数据库的两个不同的数据库表中。
进一步,根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表的数据组,包括:根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表中的数据为行数据组或列数据组。
进一步,根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别后,还包括:导出筛选出的差异数据。
进一步,查找第一文件数据表有第二文件数据表无的数据组,或者查找第二文件数据表有第一文件数据表无的数据组,包括:根据第一关键字和第二关键字,确定第一文件数据表有第二文件数据表无的数据组或者第二文件数据表有第一文件数据表无的数据组。
进一步,根据第一关键字和第二关键字,确定第一文件数据表有第二文件数据表无的数据组或者第二文件数据表有第一文件数据表无的数据组,具体包括:第一文件数据表中的一组数据的第一关键字与第二文件数据表中的任何一组数据的第一关键字都不同,确定为第一文件数据表有第二文件数据表无的数据组;第一文件数据表中的一组数据的第一关键字与第二文件数据表中的其中一组数据的第一关键字相同,继续比较两组数据的第二关键字是否相同,若相同则为不一致数据,若不同则为第一文件数据表有第二文件数据表无的数据组;第二文件数据表中的一组数据的第一关键字与第一文件数据表中的任何一组数据的第一关键字都不同,确定为第二文件数据表有第一文件数据表无的数据组;第二文件数据表中的一组数据的第一关键字与第一文件数据表中的其中一组数据的第一关键字相同,继续比较两组数据的第二关键字是否相同,若相同则为不一致数据,若不同则为第二文件数据表有第二文件数据表无的数据组。
进一步,所述第一文件和第二文件为交易明细数据文件,所述第一关键字为交易流水,所述第二关键字为客户姓名。
一种基于数据库的文件差异数据的获取装置,包括:获取模块,基于第一文件和第二文件,获取第一文件数据表和第二文件数据表,确定模块,根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表的数据组;查找标记模块,根据确定的数据组查找差异数据,并标记相应数据组的状态字段;筛选模块,根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别。
进一步,还包括:索引模块,在根据确定的数据组查找差异数据,并标记相应数据组的状态字段前,通过数据库索引选取第一文件数据表和第二文件数据表的指定数据组,并作为查找的目标文件数据表。
进一步,查找标记模块,根据确定的数据组,通过SQL语句查找差异数据,并标记每组数据组的状态字段。
进一步,查找标记模块,对第一文件数据表和第二文件表的数据组进行比对,查找第一文件数据表和第二文件数据表相同的数据组,更新第一文件数据表和第二文件数据表中相应数据组的状态字段为一致数据;查找第一文件数据表有第二文件数据表无的数据组,更新第一文件数据表中相应数据组的状态字段为第一文件有第二文件无数据;查找第二文件数据表有第一文件数据表无的数据组,更新第二文件数据表中相应数据组的状态字段为第一文件无第二文件有数据;更新第一文件数据表和第二文件数据表中数据为空的状态字段为不一致数据。
进一步,获取模块,分别依次逐行读取第一文件和第二文件的数据,并存储至同一数据库的两个不同的数据库表中。
进一步,确定模块,根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表中的数据为行数据组或列数据组。
进一步,还包括:数据导出模块,根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别后,导出筛选出的差异数据。
进一步,查找标记模块,查找第一文件数据表有第二文件数据表无的数据组,或者查找第二文件数据表有第一文件数据表无的数据组,包括:根据第一关键字和第二关键字,确定第一文件数据表有第二文件数据表无的数据组或者第二文件数据表有第一文件数据表无的数据组。
进一步,查找标记模块,根据第一关键字和第二关键字,确定第一文件数据表有第二文件数据表无的数据组或者第二文件数据表有第一文件数据表无的数据组,具体包括:第一文件数据表中的一组数据的第一关键字与第二文件数据表中的任何一组数据的第一关键字都不同,确定为第一文件数据表有第二文件数据表无的数据组;第一文件数据表中的一组数据的第一关键字与第二文件数据表中的其中一组数据的第一关键字相同,继续比较两组数据的第二关键字是否相同,若相同则为不一致数据,若不同则为第一文件数据表有第二文件数据表无的数据组;第二文件数据表中的一组数据的第一关键字与第一文件数据表中的任何一组数据的第一关键字都不同,确定为第二文件数据表有第一文件数据表无的数据组;第二文件数据表中的一组数据的第一关键字与第一文件数据表中的其中一组数据的第一关键字相同,继续比较两组数据的第二关键字是否相同,若相同则为不一致数据,若不同则为第二文件数据表有第二文件数据表无的数据组。
进一步,所述第一文件和第二文件为交易明细数据文件,所述第一关键字为交易流水,所述第二关键字为客户姓名。
一种电子设备,所述设备为基于数据库的文件差异数据获取设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
基于第一文件和第二文件,获取第一文件数据表和第二文件数据表;
根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表的数据组;
根据确定的数据组查找差异数据,并标记相应数据组的状态字段;
根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别。
由以上本申请实施例提供的技术方案可见,在本申请通过基于数据库的文件差异数据的获取方法,将两个较大的文件,读取相关数据存储到数据库的数据库表中,根据数据表的字段名确定数据组,根据确定的数据组查找差异数据,并标记相应数据组的状态字段,最终通过状态字段筛选出差异数据并能够确定差异数据类别,本发明解决现有由于机器内存太小无法完全加载文件数据进行数据的比对,而且通过状态字段快速查找差异数据。本发明基于数据库的文件差异数据的获取方法,通过结合数据库本身的索引功能,可大幅缩小数据筛选的范围,提高数据查找的速度,快速的筛选出两个文件的差异性记录。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
目前,在理财、支付等涉及多机构的交互时,过程中多个机构均会生成相关的交易明细数据文件,需要各方的文件相关的明细对比一致的情况下,才能进行监管申报等业务操作。特别对于大规模数据,且明细数据无序的情况下,需要进行两个文件内容的一致性比较,并获取文件的差异,来发现不一致的数据。
该方法的执行主体,可以但不限于手机、平板电脑或个人电脑(PersonalComputer,PC)等用户终端,或者该些用户终端上运行的应用(Application,APP),或者,还可以是服务器等设备。
为便于描述,下文以该方法的执行主体为服务器为例,对该方法的实施例方式进行介绍。可以理解,该方法的执行主体为服务器只是一种示例性的说明,并不应理解为对该方法的限定。
如图1、2所示,一种基于数据库的文件差异数据的获取方法,包括:
S101:基于第一文件和第二文件,获取第一文件数据表和第二文件数据表;
在本申请实施例中,服务器通过自身的数据导入接口依次逐行读取文件数据,将第一文件和第二文件落表,即将第一文件和第二文件的数据导入数据库的数据库表中,分别得到第一文件数据表和第二文件数据表,本申请的数据库可以为IBM的DB2,Oracle,Informix,Sybase,Sql server,PostgreSQL,Access,FoxPro,mySQl。服务器的数据库的内部存储空间大,可以对大文件进行存储,现有内存Set结构存储,只能存储文件大小在20G以下的文件的存储,而且在文件数据筛选的过程比较繁琐,文件只要不超过数据库的存储空间即可。基于第一文件和第二文件,获取第一文件数据表和第二文件数据表,包括:分别依次逐行读取第一文件和第二文件的数据,并存储至同一数据库的两个不同的数据库表中。
S102:根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表的数据组;
数据库表为二维数据存储模式,可以横向存储一组数据,也可以竖向存储一组数据,根据数据表中的字段名,即可确定数据库中的数据存储模式。
根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表的数据组,包括:根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表中的数据为行数据组或列数据组。
S103:根据确定的数据组查找差异数据,并标记相应数据组的状态字段;
本申请先定义每个文件的每组数据的状态字段,可直接反映每组数据经过对比后的状态。
本申请定义第一文件和第二文件中的每组数据的状态字段即在数据库表的后方增加状态字段“status”,用户记录第一文件和第二文件的每组数据的状态数据即状态属性,状态字段的数据(状态属性内容)包括一致数据,不一致数据,第一文件有第二文件无数据和第一文件无第二文件有数据,用于区分差异数据。在后续确定差异数据时,可以直接通过检索确定每组数据的状态字段的数据即状态属性内容,直接确定差异数据,方便数据的筛选,提升数据的提取速度。由于本申请的差异数据的筛选是通过SQL语句进行筛选,因此,在SQL的基本表中插入一个单元组“status”即可实现。
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
本申请通过数据库的SQL语句查找第一文件数据表和第二文件数据表之间的差异数据组,并及时更新每个文件每个数据组的相应状态字段以此对数据组的状态进行标记,比如,“一致数据”,“不一致数据”,“第一文件有第二文件无数据”和“第一文件无第二文件有数据”。
S104:根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别。
通过数据库的SQL语句查找第一文件数据表和第二文件数据表之间的差异数据组后,通过状态字段的关于每个文件的每组具体属性,可直接获取第一文件和第二文件之间的差异数据,差异数据组包括:第一文件或第二文件中与状态字段的不一致数据、第一文件有第二文件无数据、第一文件无第二文件有数据相对应的数据组。即,通过SQL语句输入关键字“不一致数据”、“第一文件有第二文件无数据”、“第一文件无第二文件有数据”可以直接查询差异数据,如果需要将差异数据进行导出操作,直接将差异数据通过服务器的数据导出接口即可导出至终端上。
S105:导出筛选出的差异数据。
服务器通过相应接口可以对筛选出的差异数据导出操作。
本发明基于数据库的文件差异数据的获取方法,将两个较大的文件,读取相关数据存储到数据库的数据库表中,根据数据表的字段名确定数据组,根据确定的数据组查找差异数据,并标记相应数据组的状态字段,最终通过状态字段筛选出差异数据并能够确定差异数据类别,本发明解决现有由于机器内存太小无法完全加载文件数据进行数据的比对,而且通过状态字段快速查找差异数据。
进一步,根据确定的数据组查找差异数据,并标记相应数据组的状态字段前,还包括:通过数据库索引选取第一文件数据表和第二文件数据表的指定数据组,并作为查找的目标文件数据表。
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
索引的一个主要目的就是加快检索表中数据的方法,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。
本申请采用数据库的索引技术,可以对第一文件数据表和第二文件数据表的某项或者某几项字段的数据进行筛选,例如,在文件包括字段“数量”,“交易金额”,“用户名”“账号”“用法说明”等字段中采用索引技术只选择“交易金额”“用户”两个字段的数据,可大幅缩小数据筛选的范围,提高数据查找的速度。
本发明基于数据库的文件差异数据的获取方法,通过结合数据库本身的索引功能,可大幅缩小数据筛选的范围,提高数据查找的速度,快速的筛选出两个文件的差异性记录。
一般来说,数据库中包括多个数据库表,因为每个文件中的数据都会存在差异,所以在存储过程中,一般会将不同的文件存储至不同的数据库表中,但是将不同文件存储至一个数据库表中,也可以采用本发明的基于数据库的文件差异数据的获取方法进行数据比对进而获取差异数据。
进一步,根据确定的数据组查找差异数据,并标记相应数据组的状态字段,具体包括:对第一文件数据表和第二文件表的数据组进行比对,查找第一文件数据表和第二文件数据表相同的数据组,更新第一文件数据表和第二文件数据表中相应数据组的状态字段为一致数据;查找第一文件数据表有第二文件数据表无的数据组,更新第一文件数据表中相应数据组的状态字段为第一文件有第二文件无数据;查找第二文件数据表有第一文件数据表无的数据组,更新第二文件数据表中相应数据组的状态字段为第一文件无第二文件有数据;更新第一文件数据表和第二文件数据表中数据为空的状态字段为不一致数据。
进一步,查找第一文件数据表有第二文件数据表无的数据组,或者查找第二文件数据表有第一文件数据表无的数据组,包括:根据第一关键字和第二关键字,确定第一文件数据表有第二文件数据表无的数据组或者第二文件数据表有第一文件数据表无的数据组。
进一步,根据第一关键字和第二关键字,确定第一文件数据表有第二文件数据表无的数据组或者第二文件数据表有第一文件数据表无的数据组,具体包括:第一文件数据表中的一组数据的第一关键字与第二文件数据表中的任何一组数据的第一关键字都不同,确定为第一文件数据表有第二文件数据表无的数据组;第一文件数据表中的一组数据的第一关键字与第二文件数据表中的其中一组数据的第一关键字相同,继续比较两组数据的第二关键字是否相同,若相同则为不一致数据,若不同则为第一文件数据表有第二文件数据表无的数据组;第二文件数据表中的一组数据的第一关键字与第一文件数据表中的任何一组数据的第一关键字都不同,确定为第二文件数据表有第一文件数据表无的数据组;第二文件数据表中的一组数据的第一关键字与第一文件数据表中的其中一组数据的第一关键字相同,继续比较两组数据的第二关键字是否相同,若相同则为不一致数据,若不同则为第二文件数据表有第二文件数据表无的数据组。
下面结合附图1、2以及具体文件A、B对本发明的基于数据库的文件差异数据的获取方法进行具体说明。文件A、B对应上述的第一文件和第二文件。
(1)A方文件内容,下称A文件
208810987301,20170928276137123478,3.22,C,刘宾
208810987603,20170928276137123400,0.90,D,赵四
208810987891,20170928276137123443,28.30,C,王五
208810987761,20170928276137123442,207.90,D,李飞
208810987271,20170928276137123459,155.90,C,张三
208810987145,20170928276137123424,2.17,D,欧阳
208810987145,20170928276137123443,2.17,C,欧阳
B方文件内容,下称B文件
208810987761,20170928276137123443,207.90,D,李飞
208810987891,20170928276137123442,28.30,C,王五
208810987271,20170928276137123459,155.90,C,张三
208810987603,20170928276137123400,0.90,D,赵四
208810987145,20170928276137123424,2.17,D,欧阳
208810987301,20170928276137123478,3.22,C,刘宾
(2)A文件落库后结果,即存储至数据库表
UserId |
DigestNo |
amount |
direction |
name |
status |
208810987301 |
20170928276137123478 |
3.22 |
C |
刘宾 |
|
208810987603 |
20170928276137123400 |
0.90 |
D |
赵四 |
|
208810987891 |
20170928276137123442 |
28.30 |
C |
王五 |
|
208810987761 |
20170928276137123443 |
207.90 |
D |
李飞 |
|
208810987271 |
20170928276137123459 |
155.90 |
C |
张三 |
|
208810987145 |
20170928276137123424 |
2.17 |
D |
欧阳 |
|
208810987145 |
20170928276137123443 |
2.17 |
C |
欧阳 |
|
B文件落库后结果
UserId |
DigestNo |
amount |
direction |
name |
status |
208810987761 |
20170928276137123443 |
207.90 |
C |
李飞 |
|
208810987891 |
20170928276137123442 |
28.30 |
C |
王五 |
|
208810987271 |
20170928276137123459 |
155.90 |
C |
张三 |
|
208810987603 |
20170928276137123400 |
0.90 |
D |
赵四 |
|
208810987145 |
20170928276137123443 |
2.17 |
C |
欧阳 |
|
208810987301 |
20170928276137123478 |
3.22 |
C |
刘宾 |
|
(3)筛选差异过程
a,找出A/B相同的记录
update A set A.status=‘一致’where A.digestNo in(select digestNo fromA t,B f where t.userId=f.userId and t.digestNo=f.digestNo and t.amount=f.amount and t.direction=f.direction and t.name=f.name)
b,找出A有B无的记录
update A set A.status=‘A有B无’where A.digestNo not in(selectdigestNo from B)and A.status=null
c,找出B有A无的记录
update B set B.status=‘B有A无’where A.digestNo not in(selectdigestNo from A where A.status<>‘一致’and A.status<>‘A有B无’。
备注:case中无B有A无的数据。
d,找出A/B有,但差异的数据记录
update A set A.status=’不一致’where and A.status=null.
update B set B.status=’不一致’where B.digestNo in(select digestNofrom A where A.status=‘不一致’)
通过上述实例流程可以看出,两个文件的数据待落表后,分别记录状态字段。然后采用SQL进行比对:
a.比对一致的数据,并更新A/B文件的状态字段内容;(剩余A文件、B文件中差异性的数据:部分为A有B无,部分B有A无,A和B不一致的数据)。
b.A有B无的数据,更新A文件的状态字段内容;剩下部分为A有B无但不一致的数据。
在判断A有B无的数据过程中,根据第一关键字“DigestNo”和第二关键字“name”确定A有B无的数据,具体如下:
例如,A文件最后一组数据的判断,DigestNo:20170928276137123443,name:欧阳,查找B文件中存在相同的DigestNo:20170928276137123443,name:李飞,由于第二关键字“name”不同,则为A有B无数据。
c.B有A无的数据,更新B文件的状态字段内容;剩下部分为A无B有但不一致的数据。
判断B有A无的数据的过程和上述A有B无的数据过程一致,在此不再赘述。
d.更新状态A文件、B文件为空的数据为不一致数据即可。
最后可以直接根据数据表中的状态字段,获取到所有差异的数据。
对于本发明提出的基于数据库的文件差异快速获取的方法,可以通过数据库的sql来查找出两个文件差异的数据,并结合数据库本身的索引技术,实现sql的快速筛选差异数据能力。
以上为本申请实施例提供的基于数据库的文件差异数据的获取方法,基于同样的思路,本申请实施例还提供相应的基于数据库的文件差异数据获取的装置和电子设备。
如图3所示,一种文件差异数据的获取装置,包括:
获取模块,基于第一文件和第二文件,获取第一文件数据表和第二文件数据表,
确定模块,根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表的数据组;
查找标记模块,根据确定的数据组查找差异数据,并标记相应数据组的状态字段;
筛选模块,根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别。
本发明文件差异数据的获取装置,还包括:索引模块,在根据确定的数据组查找差异数据,并标记相应数据组的状态字段前,通过数据库索引选取第一文件数据表和第二文件数据表的指定数据组,并作为查找的目标文件数据表。
进一步,查找标记模块,根据确定的数据组,通过SQL语句查找差异数据,并标记每组数据组的状态字段。
进一步,查找标记模块,
对第一文件数据表和第二文件表的数据组进行比对,查找第一文件数据表和第二文件数据表相同的数据组,更新第一文件数据表和第二文件数据表中相应数据组的状态字段为一致数据;
查找第一文件数据表有第二文件数据表无的数据组,更新第一文件数据表中相应数据组的状态字段为第一文件有第二文件无数据;
查找第二文件数据表有第一文件数据表无的数据组,更新第二文件数据表中相应数据组的状态字段为第一文件无第二文件有数据;
更新第一文件数据表和第二文件数据表中数据为空的状态字段为不一致数据。
进一步,获取模块,分别依次逐行读取第一文件和第二文件的数据,并存储至同一数据库的两个不同的数据库表中。
进一步,确定模块,根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表中的数据为行数据组或列数据组。
进一步,还包括:数据导出模块,根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别后,导出筛选出的差异数据。
进一步,查找标记模块,查找第一文件数据表有第二文件数据表无的数据组,或者查找第二文件数据表有第一文件数据表无的数据组,包括:根据第一关键字和第二关键字,确定第一文件数据表有第二文件数据表无的数据组或者第二文件数据表有第一文件数据表无的数据组。
进一步,查找标记模块,根据第一关键字和第二关键字,确定第一文件数据表有第二文件数据表无的数据组或者第二文件数据表有第一文件数据表无的数据组,具体包括:
第一文件数据表中的一组数据的第一关键字与第二文件数据表中的任何一组数据的第一关键字都不同,确定为第一文件数据表有第二文件数据表无的数据组;
第一文件数据表中的一组数据的第一关键字与第二文件数据表中的其中一组数据的第一关键字相同,继续比较两组数据的第二关键字是否相同,若相同则为不一致数据,若不同则为第一文件数据表有第二文件数据表无的数据组;
第二文件数据表中的一组数据的第一关键字与第一文件数据表中的任何一组数据的第一关键字都不同,确定为第二文件数据表有第一文件数据表无的数据组;
第二文件数据表中的一组数据的第一关键字与第一文件数据表中的其中一组数据的第一关键字相同,继续比较两组数据的第二关键字是否相同,若相同则为不一致数据,若不同则为第二文件数据表有第二文件数据表无的数据组。
进一步,所述第一文件和第二文件为交易明细数据文件,所述第一关键字为交易流水,所述第二关键字为客户姓名。
本发明电子设备,所述设备为基于数据库的文件差异数据获取设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
基于第一文件和第二文件,获取第一文件数据表和第二文件数据表;
根据第一文件数据表和第二文件数据表中的字段名,确定第一文件数据表和第二文件数据表的数据组;
根据确定的数据组查找差异数据,并标记相应数据组的状态字段;
根据状态字段和确定的数据组,筛选出差异数据以及差异数据类别。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。