数据库的导库方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据库技术,尤其涉及一种数据库的导库方法及装置。
【背景技术】
[0002]在企业信息系统的使用过程中,随着企业业务的不断发展和应用领域的不断拓宽,当某个系统满足不了用户需求时会选择使用另一个更为完善的系统,为了继续使用原系统中的重要信息,就需要把原系统数据库中的数据导到另一个目标系统数据库中去。
[0003]现有的数据库导库方法主要有两种:方法一是先把原系统中的数据以一定的格式导出,大多是导出成一定格式的xml文件,然后通过解析导出的xml文件重新入库到目标系统中去。方法二是直接连接两个库的数据源,用线程循环扫描原系统的表,直接从表中取η条数据然后插入目标系统的表中。
[0004]方法一存在的问题是,操作起来比较繁琐,效率也比较低,导出的文件会占用大量的磁盘空间;方法二存在的问题是,程序中断后,如果重新启动导库服务无法继续接着原系统之前的数据继续导库,会从头开始扫描原系统中整个表的数据,导致目标系统中出现大量的重复数据,这样就得删掉目标系统中之前导过的数据重新开始导库,操作复杂且出错概率较大。
【发明内容】
[0005]本发明提供一种数据库的导库方法及装置,以克服现有技术中导库操作效率低的问题。
[0006]第一方面,本发明提供一种数据库的导库方法,用于将原系统数据表的数据导入至目标系统数据表中,还包括一个用于记录已导出数据的记录表;所述方法包括:
[0007]步骤a、获取所述记录表中最后一条记录所对应的参考序列号;
[0008]步骤b、判断所述原系统数据表中是否存在待导出记录,所述待导出记录对应的序列号比所述参考序列号大;
[0009]步骤C、若存在,则获取所述原系统数据表中按第一主键序列号升序排序后比所述参考序列号大的第一条待导出记录所对应的数据,将所述数据导入至所述目标系统数据表中;并在所述记录表中插入一条记录作为最后一条记录,所述最后一条记录对应的参考序列号设置为所述第一条待导出记录所对应的序列号;
[0010]返回执行步骤a,直至所述原系统数据表的数据全部导入至所述目标系统数据表中。
[0011 ] 可选地,所述步骤a还包括:
[0012]若所述记录表无记录,则将所述参考序列号默认为O。
[0013]可选地,在步骤c中,若不存在所述待导出记录,则导库流程结束。
[0014]第二方面,本发明提供一种数据库的导库装置,用于将原系统数据表的数据导入至目标系统数据表中,还包括一个用于记录已导出数据的记录表;所述装置包括:
[0015]获取模块,用于获取所述记录表中最后一条记录所对应的参考序列号;
[0016]判断模块,用于判断所述原系统数据表中是否存在待导出记录,所述待导出记录对应的序列号比所述参考序列号大;
[0017]处理模块,用于若所述判断模块判断存在所述待导出记录,则获取所述原系统数据表中按第一主键序列号升序排序后比所述参考序列号大的第一条待导出记录所对应的数据,将所述数据导入至所述目标系统数据表中;并在所述记录表中插入一条记录作为最后一条记录,所述最后一条记录对应的参考序列号设置为所述第一条待导出记录所对应的序列号;
[0018]可选地,所述获取模块还用于:
[0019]若所述记录表无记录,则将所述参考序列号默认为O。
[0020]可选地,所述处理模块,还用于:若所述判断模块判断不存在所述待导出记录,则结束导库流程。
[0021]本发明数据库的导库方法及装置,通过获取所述记录表中最后一条记录所对应的参考序列号;判断所述原系统数据表中是否存在序列号比所述参考序列号大的待导出记录;若存在,则获取所述原系统数据表中按第一主键序列号升序排序后比所述参考序列号大的第一条待导出记录所对应的数据,将所述数据导入至所述目标系统数据表中;并在所述记录表中插入一条记录作为最后一条记录,所述最后一条记录对应的参考序列号设置为所述第一条待导出记录所对应的序列号;重复执行上述过程,直至所述原系统数据表的数据全部导入至所述目标系统数据表中,提高了导库效率,避免了导库中断后,从头开始将原系统数据表的数据导入目标系统数据表中,出现大量的重复数据的问题。
【附图说明】
[0022]图1为本发明数据库的导库方法实施例一的流程图一;
[0023]图2为本发明数据库的导库方法实施例一的信令流程图;
[0024]图3为本发明数据库的导库装置实施例一的结构示意图。
【具体实施方式】
[0025]图1为本发明数据库的导库方法实施例一的流程图一,图2为本发明数据库的导库方法实施例一的信令流程图。本实施例的方法用于将原系统数据表的数据导入至目标系统数据表中,如图2所示,还包括一个用于记录已导出数据的记录表。如图1所示,本实施例的方法可以包括:
[0026]步骤a、犾取记录表中最后一条记录所对应的参考序列号;
[0027]步骤b、判断原系统数据表中是否存在待导出记录,待导出记录对应的序列号比参考序列号大;
[0028]步骤C、若存在,则获取原系统数据表中按第一主键序列号升序排序后比参考序列号大的第一条待导出记录所对应的数据,将数据导入至目标系统数据表中;并在记录表中插入一条记录作为最后一条记录,最后一条记录对应的参考序列号设置为第一条待导出记录所对应的序列号;
[0029]返回执行步骤a,直至原系统数据表的数据全部导入至目标系统数据表中。
[0030]具体地,本实施例的方法可以做成一个批处理文件bat启动的导库服务,需要同时连接两个原系统以及目标系统的数据源,需要以下三个表:原系统数据表,目标系统数据表,已导出数据的记录表。在bat的配置文件中配置好需要导出和导入的表名以及入库的实现类。
[0031]bat启动后由main方法开启一个线程,设这个线程执行的扫描接口实现类为scanner,如图2所示,本实施例的执行主体可以为数据库的导库装置,执行scanner获取记录表中最后一条记录所对应的参考序列号(步骤I),获取到参考序列号(步骤2)之后,判断原系统数据表中是否存在序列号比参考序列号大的待导出记录(步骤3),若不存在待导出记录(步骤4a),则结束导库;若存在待导出记录(步骤4b),则获取原系统数据表中按第一主键序列号升序排序后比参考序列号大的第一条待导出记录所对应的数据,将对应的数据导入目标系统数据表中(步骤5),并在记录表中插入一条记录作为最后一条记录,将最后一条记录对应的参考序列号设置为第一条待导出记录所对应的序列号,也即记录第一条待导出记录所对应的序列号(步骤6),还可以生成该条数据导入成功或失败的日志,若导入成功,则向数据库的导库装置返回数据导入成功(步骤7);执行上述步骤之后,如图1所示,返回执行步