一种不同数据库间数据同步的方法和系统的制作方法

文档序号:10570058阅读:532来源:国知局
一种不同数据库间数据同步的方法和系统的制作方法【专利摘要】本发明涉及一种不同数据库间数据同步的方法和系统。其中方法包括步骤S1,读取源数据库待同步表数据到第一文本文件,以及读取目的数据库同名待同步表数据到第二文本文件;步骤S2,将所述第一文本文件和所述第二文本文件根据唯一索引方式进行数据比较,得到比较结果;步骤S3,对所述比较结果进行数据同步,得到数据同步结果;步骤S4,输出所述数据同步结果。本发明提供了一种基于ORACLEPROC语言第四动态SQL实现的不同ORACLE数据库之间表数据的同步方案,可以根据生产需要针对时间段、全量和表名三个维度进行同步,并能够扩展为多进程,在没有表信息的前提下,只需要已知待同步的表名称即可完成同步,能够实现不同的同步逻辑、满足不同的业务场景。【专利说明】一种不同数据库间数据同步的方法和系统
技术领域
[0001]本发明涉及数据库同步领域,尤其涉及一种不同数据库间数据同步的方法和系统。【
背景技术
】[0002]对于大型IT系统而言,全局配置数据往往是在一个配置数据管理系统生成,然后同步到其他业务系统中使用,该类IT系统存在数据模型复杂、数据量大的特点,导致系统配置表多,需要建设局数据管理系统以保证配置数据的准确性和可控性,在局数据管理系统中进行数据配置,然后同步到其它业务系统,同步要求数据的准确性、及时性、同步过程的可跟踪性。[0003]现有的数据库同步方案主要集中在下述几种:第一,基于DBLINK的级别数据同步,需要在目标库建立DBLINK,安全性不高且容易导致被链接数据库重启失败;第二,基于日志的同步,一般是ORACLE数据库自带的热备同步工具,属于重量级方案,机制过于复杂,且对双方数据库的性能都有影响;第三,由第三方提供的同步工具,这类工具为了兼容多种类型的数据库,设计都比较复杂,也属于重量级方案;本发明提供的是一种轻量级的数据库同步方案,源代码较少且对系统依赖性小,具有较好的应用前景。【
发明内容】[0004]本发明所要解决的技术问题是针对现有技术的不足,提供一种不同数据库间数据同步的方法和系统。[0005]本发明解决上述技术问题的技术方案如下:一种不同数据库间数据同步的方法,包括如下步骤:[0006]步骤S1,读取源数据库待同步表数据到第一文本文件,以及读取目的数据库同名待同步表数据到第二文本文件;[0007]步骤S2,将所述第一文本文件和所述第二文本文件根据唯一索引方式进行数据比较,得到比较结果;[0008]步骤S3,对所述比较结果进行数据同步,得到数据同步结果;[0009]步骤S4,输出所述数据同步结果。[0010]本发明的有益效果是:本发明提供了一种基于ORACLEPR0C语言第四动态SQL实现的不同ORACLE数据库之间表数据的同步方案,可以根据生产需要针对时间段、全量和表名三个维度进行同步,并能够扩展为多进程,在没有表信息的前提下,只需要已知待同步的表名称即可完成同步,能够实现不同的同步逻辑、满足不同的业务场景。[0011]在上述技术方案的基础上,本发明还可以做如下改进。[0012]进一步地,步骤S1中读取源数据库待同步表数据到第一文本文件以及读取目的数据库同名待同步表数据到第二文本文件的具体实现为:[0013]使用ORACLEPR0C语言第四动态SQL将源数据库待同步表数据读取到第一文本文件;[0014]使用ORACLEPR0C语言第四动态SQL将目的数据库同名待同步表数据读取到第二文本文件。[0015]采用上述进一步方案的有益效果是:采用第四动态SQL实现不同ORACLE数据库之间表数据的同步,该方法具有高度的灵活性和良好的通用性,易于扩展和满足不同系统的应用。[0016]进一步地,步骤S2包括如下步骤:[0017]步骤S21,从源数据库查询系统对象信息表以获取源数据库待同步表对应的唯一索引字段;[0018]步骤S22,根据唯一索引字段,将第一文本文件和第二文本文件进行逐行比对,得到比较结果。[0019]采用上述进一步方案的有益效果是:采用唯一索引字段,能够将实现表数据的逐行比对,实现方法简便,能够达到轻量级的编程效果。[0020]进一步地,步骤S3包括如下步骤:[0021]步骤S31,从时间段、全量和表名三个维度的任一维度获取源数据库待同步表集合;[0022]若从时间段维度获取源数据库待同步表的表名,则关联源数据库待同步表集合和ORACLE数据库系统对象表ALL_0BJECTS的最近操作时间字段LAST_DDL_HME,将在设定天数内有操作的表作为源数据库待同步表集合;[0023]若从全量维度获取源数据库待同步表的表名,则直接得到源数据库待同步表集合;[0024]若从表名维度获取源数据库待同步表的表名,则将程序参数作为源数据库待同步表,得到源数据库待同步表集合;[0025]步骤S32,将源数据库待同步表集合中每一个单表按照表名称首字母顺序,进行数据同步。[0026]采用上述进一步方案的有益效果是:通过从三个维度的任一维度获取待同步数据表的表名,可以提高同步效率,使得数据同步更具灵活性。[0027]进一步地,步骤S3中,对所述比较结果进行数据同步的具体实现为:[0028]若第一文本文件内包含的数据第二文本文件内不包含时,则目的数据库对照源数据库进行数据同步,执行插入操作;[0029]若第一文本文件内包含的数据第二文本文件内也包含,但两者数据不一致时,则目的数据库对照源数据库进行数据同步,执行更新操作;[0030]若第一文本文件内包含的数据第二文本文件内也包含,且两者数据一致时,则目的数据库和源数据库不进行任何操作。[0031]采用上述进一步方案的有益效果是:数据同步前,针对目的表数据和源表数据的不同情况,进行智能化判断,减少了同步的数据量,提高了同步效率。[0032]本发明解决上述技术问题的另一种技术方案如下:一种不同数据库间数据同步的系统,包括数据读取模块、数据比较模块、数据同步模块和输出模块;[0033]所述数据读取模块,用于读取源数据库待同步表数据到第一文本文件,以及读取目的数据库同名待同步表数据到第二文本文件;[0034]所述数据比较模块,用于将所述第一文本文件和所述第二文本文件根据唯一索引方式进行数据比较,得到比较结果;[0035]所述数据同步模块,用于对所述比较结果进行数据同步,得到数据同步结果;[0036]所述输出模块,用于输出所述数据同步结果。[0037]本发明的有益效果是:本发明提供了一种基于ORACLEPR0C语言第四动态SQL实现的不同ORACLE数据库之间表数据的同步方案,可以根据生产需要针对时间段、全量和表名三个维度进行同步,并能够扩展为多进程,在没有表信息的前提下,只需要已知待同步的表名称即可完成同步,能够实现不同的同步逻辑、满足不同的业务场景。[0038]进一步地,所述数据读取模块读取源数据库待同步表数据到第一文本文件以及读取目的数据库同名待同步表数据到第二文本文件的具体实现为:[0039]使用ORACLEPR0C语言第四动态SQL将源数据库待同步表数据读取到第一文本文件;[0040]使用ORACLEPR0C语言第四动态SQL将目的数据库同名待同步表数据读取到第二文本文件。[0041]采用上述进一步方案的有益效果是:采用第四动态SQL实现不同ORACLE数据库之间表数据的同步,该方法具有高度的灵活性和良好的通用性,易于扩展和满足不同系统的应用。[0042]进一步地,所述数据比较模块包括:[0043]获取索引字段单元,用于从源数据库查询系统对象信息表以获取源数据库待同步表对应的唯一索引字段;[0044]逐行比较单元,用于根据唯一索引字段,将第一文本文件和第二文本文件进行逐行比对,得到比较结果。[0045]采用上述进一步方案的有益效果是:采用唯一索引字段,能够将实现表数据的逐行比对,实现方法简便,能够达到轻量级的编程效果。[0046]进一步地,所述数据同步模块包括:[0047]获取表名单元,用于从时间段、全量和表名三个维度的任一维度获取源数据库待同步表集合;[0048]若从时间段维度获取源数据库待同步表的表名,则关联源数据库待同步表集合和ORACLE数据库系统对象表ALL_0BJECTS的最近操作时间字段LAST_DDL_HME,将在设定天数内有操作的表作为源数据库待同步表集合;[0049]若从全量维度获取源数据库待同步表的表名,则直接得到源数据库待同步表集合;[0050]若从表名维度获取源数据库待同步表的表名,则将程序参数作为源数据库待同步表,得到源数据库待同步表集合;[0051]同步表单元,用于将源数据库待同步表集合中每一个单表按照表名称首字母顺序,进行数据同步。[0052]采用上述进一步方案的有益效果是:通过从三个维度的任一维度获取待同步数据表的表名,可以提高同步效率,使得数据同步更具灵活性。[0053]进一步地,所述数据同步模块用于对所述比较结果进行数据同步的具体实现为:[0054]若第一文本文件内包含的数据第二文本文件内不包含时,则目的数据库对照源数据库进行数据同步,执行插入操作;[0055]若第一文本文件内包含的数据第二文本文件内也包含,但两者数据不一致时,则目的数据库对照源数据库进行数据同步,执行更新操作;[0056]若第一文本文件内包含的数据第二文本文件内也包含,且两者数据一致时,则目的数据库和源数据库不进行任何操作。[0057]采用上述进一步方案的有益效果是:数据同步前,针对目的表数据和源表数据的不同情况,进行智能化判断,减少了同步的数据量,提高了同步效率。【附图说明】[0058]图1为本发明所述一种不同数据库间数据同步的方法流程图;[0059]图2为本发明所述一种不同数据库间数据同步的系统结构图。【具体实施方式】[0060]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。[0061]图1为本发明一种不同数据库间数据同步的方法流程图。[0062]如图1所示,一种不同数据库间数据同步的方法,包括如下步骤:[0063]步骤S1,读取源数据库待同步表数据到第一文本文件,以及读取目的数据库同名待同步表数据到第二文本文件;[0064]在本发明的具体实施例中,读取源数据库待同步表数据到第一文本文件以及读取目的数据库同名待同步表数据到第二文本文件的具体实现为:使用ORACLEPR0C语言第四动态SQL将源数据库待同步表数据读取到第一文本文件;使用ORACLEPR0C语言第四动态SQL将目的数据库同名待同步表数据读取到第二文本文件。[0065]步骤S2,将所述第一文本文件和所述第二文本文件根据唯一索引方式进行数据比较,得到比较结果;[0066]在本发明的具体实施例中,从源数据库查询系统对象信息表以获取源数据库待同步表对应的唯一索引字段;通过关联ORACLE索引字段对象表USER_IND_COLUMNS和索引对象表USER_INDEXES获取待同步表的唯一索引字段C0LUMN_NAME,例如C0LUMN_1\C0LUMN_2。[0067]在本发明的具体实施例中,根据唯一索引字段,将第一文本文件和第二文本文件进行逐行比对,得到比较结果。假定全表字段为(C0LUMN_1\⑶LUMN_2\⑶LUMN_3\C0LUMN_4),逐行读取第一文本文件中记录,与第二文本文件中记录进行逐行比对,当C0LUMN_1\C0LUMN_2相等时比对C0LUMN_3\C0LUMN_4,区分不同比对结果更新目的表,当第一文本文件具有的数据第二文本文件中没有时,则进行增加操作;当第一文本文件和第二文本文件都具有数据,但不相同时,则进行修改操作;当第一文本文件不具有,但第二文本文件具有数据时,则进行删除操作。[0068]步骤S3,对所述比较结果进行数据同步,得到数据同步结果;[0069]在本发明的具体实施例中,从时间段、全量和表名三个维度的任一维度获取源数据库待同步表集合;若从时间段维度获取源数据库待同步表的表名,则关联源数据库待同步表集合和ORACLE数据库系统对象表ALL_OBJECTS的最近操作时间字段LAST_DDL_HME,将在设定天数内有操作的表作为源数据库待同步表集合;若从全量维度获取源数据库待同步表的表名,则直接得到源数据库待同步表集合;若从表名维度获取源数据库待同步表的表名,则将程序参数,即本例样表USERINFO表,作为源数据库待同步表,得到源数据库待同步表集合;将源数据库待同步表集合中每一个单表按照表名称首字母顺序,进行数据同步。[0070]对所述比较结果进行数据同步的具体实现为:若第一文本文件内包含的数据第二文本文件内不包含时,则目的数据库对照源数据库进行数据同步,执行插入操作;若第一文本文件内包含的数据第二文本文件内也包含,但两者数据不一致时,则目的数据库对照源数据库进行数据同步,执行更新操作;若第一文本文件内包含的数据第二文本文件内也包含,且两者数据一致时,则目的数据库和源数据库不进行任何操作。[0071]在本发明的具体实施例中,对每一个单表进行数据同步包括:从ORACLE表字段描述表ALL_TAB_COLUMNS带入目的表名获取该目的表的全部字段;解析已获取的目的表的全部字段;从源表数据获取数据,并存储到单行记录结构体COLUMN.DATA;针对获取的所述单行记录结构体COLUMN.DATA进行拆串处理,获取到表数据,并针对日期类型做格式转换,再将全部记录数据插入到目的数据库。[0072]步骤S4,输出所述数据同步结果。[0073]图2为本发明一种不同数据库间数据同步的系统结构图。[0074]如图2所示,一种不同数据库间数据同步的系统,包括数据读取模块、数据比较模块、数据同步模块和输出模块;[0075]所述数据读取模块,用于读取源数据库待同步表数据到第一文本文件,以及读取目的数据库同名待同步表数据到第二文本文件;[0076]在本发明的具体实施例中,所述数据读取模块读取源数据库待同步表数据到第一文本文件以及读取目的数据库同名待同步表数据到第二文本文件的具体实现为:使用ORACLEPR0C语言第四动态SQL将源数据库待同步表数据读取到第一文本文件;使用ORACLEPR0C语言第四动态SQL将目的数据库同名待同步表数据读取到第二文本文件。[0077]所述数据比较模块,用于将所述第一文本文件和所述第二文本文件根据唯一索引方式进行数据比较,得到比较结果;[0078]在本发明的具体实施例中,获取索引字段单元,用于从源数据库查询系统对象信息表以获取源数据库待同步表对应的唯一索引字段;逐行比较单元,用于根据唯一索引字段,将第一文本文件和第二文本文件进行逐行比对,对目的表数据进行增加、删除或修改,得到比较结果。[0079]所述数据同步模块,用于对所述比较结果进行数据同步,得到数据同步结果;[0080]在本发明的具体实施例中,所述数据同步模块包括:获取表名单元,用于从时间段、全量和表名三个维度的任一维度获取源数据库待同步表集合;[0081]若从时间段维度获取源数据库待同步表的表名,则关联源数据库待同步表集合和ORACLE数据库系统对象表ALL_0BJECTS的最近操作时间字段LAST_DDL_HME,将在设定天数内有操作的表作为源数据库待同步表集合;若从全量维度获取源数据库待同步表的表名,则直接得到源数据库待同步表集合;若从表名维度获取源数据库待同步表的表名,则将程序参数,即本例样表USERINFO表作为源数据库待同步表,得到源数据库待同步表集合;同步表单元,用于将源数据库待同步表集合中每一个单表按照表名称首字母顺序,进行数据同步。[0082]在本发明的具体实施例中,所述数据同步模块用于对所述比较结果进行数据同步的具体实现为:若第一文本文件内包含的数据第二文本文件内不包含时,则目的数据库对照源数据库进行数据同步,执行插入操作;若第一文本文件内包含的数据第二文本文件内也包含,但两者数据不一致时,则目的数据库对照源数据库进行数据同步,执行更新操作;若第一文本文件内包含的数据第二文本文件内也包含,且两者数据一致时,则目的数据库和源数据库不进行任何操作。[0083]所述输出模块,用于输出所述数据同步结果。[0084]实施例:四川广电从基础域系统同步配置表到BOSS业务域的过程:[0085]该项目要求程序具备三种执行方式:[0086]1、针对表名同步:适用场景是营业员配置了一条配置数据之后,要立即适用该配置数据,操作方式:synTabledblink_srcdblink_aimtale_name;其中dblink是数据库连接串、tale_name是要同步的表名称;[0087]2、按照时间段同步:适用场景是某期限(如一周内)内营业员集中配置了一批配置数据(涉及多表多时间段)后,需要把这一周内操作的所有表做同步,操作方式:synTabledblink_srcdblink_aim7;其中7就是到系统时间的时间间隔;[0088]3、全量同步:适用场景是系统新上线,需要把基础域的全部配置表(大概300张表)数据同步到生产域,操作方式:synTabledblink_srcdblink_aimall;其中all表述为全部表;[0089]针对上述三种操作过程如下:[0090]1)根据上述三种操作类型确定待处理的表名称列表,如:[0091]a)表名:假定表名为sparam[0092]执行语句selecttable_namefromSSYNTABLELISTwheretable_name='sparam',读取的待处理表名链表为table_name_list="sparam"一其中sparam为待同步表名称;[0093]b)时间段:假定为7天[0094]执行语句selecttable_namefromSSYNTABLELISTwheretable_namein(selectobject_namefromall_objectswhereto_date[0095](to_char(sysdate,'yyyymmdd,),'yyyymmdd,)_to_date(to_char(last_ddl_time,,yyyymmdd,),,yyyymmdd,)〈=7)[0096]读取的待处理表名链表为table_name_list="sparam,smonthcode,[0097]sconfigeode"一其中sparam,smonthcode,sconfigcode为近七天内有操作的待同步的三张表名称;[0098]c)全量:[0099]执行语句selecttable_namefromSSYNTABLELIST[0100]读取的待处理表名链表为table_name_list="sparam,smonthcode,sconfigcode,screditcode-其中sparam,smonthcode,sconfigcode,screditcode,为待同步的全量表名称;[0101]2)同步表名:以table_name_list="sparam"为例[0102]a)从ORACLE系统表all_tab_columns获取sparam表的列信息;[0103]SELECTcolumn_name,data_type,nvl(data_precision,0),[0104]nvl(data_scale,0),[0105]nvl(data_length,0)FR0Mall_tab_columnsWHEREtable_name=upper('sparam')andowner=upper('DBACCADM')ORDERBYcolumn_id[0106]b)使用ORACLE第四动态SQL语法,从源数据库dblink_src获取sparam表数据,并根据该表的列信息进行数据的封装,以及对空数据的处理;[0107]1?申请动态描述变量'out':[0108]/*组织查询所需的宿主变量信息*/'EXE0SQLALLOCATEDESCRIPTOR1out';EXECSQLPREPAREs3FROM:sSqlStr;EXECSQLDECLAREc3CURSORFORs3;EXECSQLOPENc3?EXEGSQLDESCRIBEOUTPUTs3USINGDESCRIPTOR'out';for(n~1:n<~gIobe.dCoIumnNum*n++){EXECSQLSETDESCRIPTOR'out'VALUE:nTYPE=:gtype,LENGTH=:coIumn[n-1].actu_Iength,DATA=:coIumn[n~1J.data;}[0109]2.解析'out'行记录结构拆解出列记录并存储到内存结构体column中:[0110]EXECSQLFETCHc3INTODESCRIPTOR'out';一读取一行记录[0111]EXECSQLGETDESCRIPTOR,out,VALUE:n:column[n-l].data=DATA;-拆解列记录[0112]c)把上述中已解析的column数据插入到目的数据库dblink_aim的sparam表中,如果配置了按照索引比对的话,需要增加读取目的数据库表并核对更新的过程;[0113]/*拼接入库语句*/sprintf(sinsert_sql,"INSERTINTO%sVALUES(,globe,sTableName);for(n.二0:;rl<globe.dColumnNum;n++){/*日期转化*/ifC!strncmp(eolumn[n].data_type,"DATE",4)){:&p.rmt十(s.ms.e:rt-s'qI.,"%sto_date(:p,*yyyymmddhh24miss'),",sinsert_sqI);cqIumn[n].actu_length=32;coIumn[n],data-calIoc(globe.I(mlt,32);/*数字转化*/elseif(!strncmp(column[nJdata__type,"NUMBER,6)){strcQt(sinsert-sqI,":P,");If((coIumn[n].actu_Iength=coIumn[n].data_precision+coIumn[n].data_scaIe+1)==1)goIumn[n].actu_Iength-39;coIumn[n].data=caI!oc(gIobe.Iim11,coIumn[n].actu_Iength);/*字符串*/else{strcat(sinsertsqI,":p,");goIumn[n].actu_length=c?!umn[n].char_Iength+1?[0114]coiumn[n].data=caIIoc(gIobe.Iimit,coIumn[n].actu_Iength);}}sinsert_sqI[strIen(sinsert_sqI)-1]=sinsert-se|l[strlen(sinsert-sql)]='\0';[0115]3)同步时间段内表:拆解待同步表数组七&1316_的1116_1181:,分别对三张表8口3抑111,smonthcode,sconfigcode进行同步,同步单表的过程与同步单表的过程一致,不再赘述;[0116]4)同步全量表:拆解待同步表数组table_namejist,分别对多张单表sparam,smonthcode,sconfigcode,screditcode,进行同步;[0117]本实施例中在只知道表名而不知道表结构的情况下即可完成多个表的数据同步,后续即使该表的表结构改变了,也不需要修改代码程序,依然可以正常运转,减少了开发及维护成本;[0118]本实施例也可以在unix定时任务crontab中配置定时执行,定时完成特定条件(表名、时间段、全量)的数据同步工作,减少人为操作及维护成本。[0119]在本说明书的描述中,参考术语"实施例一"、"实施例二"、"示例"、"具体示例"、或"一些示例"等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。[0120]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。【主权项】1.一种不同数据库间数据同步的方法,其特征在于,包括如下步骤:步骤Sl,读取源数据库待同步表数据到第一文本文件,以及读取目的数据库同名待同步表数据到第二文本文件;步骤S2,将所述第一文本文件和所述第二文本文件根据唯一索引方式进行数据比较,得到比较结果;步骤S3,对所述比较结果进行数据同步,得到数据同步结果;步骤S4,输出所述数据同步结果。2.根据权利要求1所述的一种不同数据库间数据同步的方法,其特征在于,步骤Sl中读取源数据库待同步表数据到第一文本文件以及读取目的数据库同名待同步表数据到第二文本文件的具体实现为:使用ORACLEPROC语言第四动态SQL将源数据库待同步表数据读取到第一文本文件;使用ORACLEPROC语言第四动态SQL将目的数据库同名待同步表数据读取到第二文本文件。3.根据权利要求1所述的一种不同数据库间数据同步的方法,其特征在于,步骤S2包括如下步骤:步骤S21,从源数据库查询系统对象信息表以获取源数据库待同步表对应的唯一索引字段;步骤S22,根据唯一索引字段,将第一文本文件和第二文本文件进行逐行比对,得到比较结果。4.根据权利要求1所述的一种不同数据库间数据同步的方法,其特征在于,步骤S3包括如下步骤:步骤S31,从时间段、全量和表名三个维度的任一维度获取源数据库待同步表集合;若从时间段维度获取源数据库待同步表的表名,则关联源数据库待同步表集合和ORACLE数据库系统对象表ALL_0BJECTS的最近操作时间字段LAST_DDL_HME,将在设定天数内有操作的表作为源数据库待同步表集合;若从全量维度获取源数据库待同步表的表名,则直接得到源数据库待同步表集合;若从表名维度获取源数据库待同步表的表名,则将程序参数作为源数据库待同步表,得到源数据库待同步表集合;步骤S32,将源数据库待同步表集合中每一个单表按照表名称首字母顺序,进行数据同步。5.根据权利要求1-4任一项所述的一种不同数据库间数据同步的方法,其特征在于,步骤S3中,对所述比较结果进行数据同步的具体实现为:若第一文本文件内包含的数据第二文本文件内不包含时,则目的数据库对照源数据库进行数据同步,执行插入操作;若第一文本文件内包含的数据第二文本文件内也包含,但两者数据不一致时,则目的数据库对照源数据库进行数据同步,执行更新操作;若第一文本文件内包含的数据第二文本文件内也包含,且两者数据一致时,则目的数据库和源数据库不进行任何操作。6.-种不同数据库间数据同步的系统,其特征在于,包括数据读取模块、数据比较模块、数据同步模块和输出模块;所述数据读取模块,用于读取源数据库待同步表数据到第一文本文件,以及读取目的数据库同名待同步表数据到第二文本文件;所述数据比较模块,用于将所述第一文本文件和所述第二文本文件根据唯一索引方式进行数据比较,得到比较结果;所述数据同步模块,用于对所述比较结果进行数据同步,得到数据同步结果;所述输出模块,用于输出所述数据同步结果。7.根据权利要求6所述的一种不同数据库间数据同步的系统,其特征在于,所述数据读取模块读取源数据库待同步表数据到第一文本文件以及读取目的数据库同名待同步表数据到第二文本文件的具体实现为:使用ORACLEPROC语言第四动态SQL将源数据库待同步表数据读取到第一文本文件;使用ORACLEPROC语言第四动态SQL将目的数据库同名待同步表数据读取到第二文本文件。8.根据权利要求6所述的一种不同数据库间数据同步的系统,其特征在于,所述数据比车父丰旲块包括:获取索引字段单元,用于从源数据库查询系统对象信息表以获取源数据库待同步表对应的唯一索引字段;逐行比较单元,用于根据唯一索引字段,将第一文本文件和第二文本文件进行逐行比对,得到比较结果。9.根据权利要求6所述的一种不同数据库间数据同步的系统,其特征在于,所述数据同步丰吴块包括:获取表名单元,用于从时间段、全量和表名三个维度的任一维度获取源数据库待同步表集合;若从时间段维度获取源数据库待同步表的表名,则关联源数据库待同步表集合和ORACLE数据库系统对象表ALL_0BJECTS的最近操作时间字段LAST_DDL_HME,将在设定天数内有操作的表作为源数据库待同步表集合;若从全量维度获取源数据库待同步表的表名,则直接得到源数据库待同步表集合;若从表名维度获取源数据库待同步表的表名,则将程序参数作为源数据库待同步表,得到源数据库待同步表集合;同步表单元,用于将源数据库待同步表集合中每一个单表按照表名称首字母顺序,进行数据同步。10.根据权利要求6-9任一项所述的一种不同数据库间数据同步的系统,其特征在于,所述数据同步模块用于对所述比较结果进行数据同步的具体实现为:若第一文本文件内包含的数据第二文本文件内不包含时,则目的数据库对照源数据库进行数据同步,执行插入操作;若第一文本文件内包含的数据第二文本文件内也包含,但两者数据不一致时,则目的数据库对照源数据库进行数据同步,执行更新操作;若第一文本文件内包含的数据第二文本文件内也包含,且两者数据一致时,则目的数据库和源数据库不进行任何操作。【文档编号】G06F17/30GK105930493SQ201610291031【公开日】2016年9月7日【申请日】2016年5月4日【发明人】李波【申请人】北京思特奇信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1