[发明专利]数据库表结构的同步方法、装置、电子设备和存储介质有效
申请号: | 201710149902.5 | 申请日: | 2017-03-14 |
公开(公告)号: | CN108572996B | 公开(公告)日: | 2021-02-26 |
发明(设计)人: | 吴明波 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F16/27 | 分类号: | G06F16/27;G06F16/22 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张一军;姜劲 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 结构 同步 方法 装置 电子设备 存储 介质 | ||
本发明实施例提供一种数据库表结构的同步方法、装置、电子设备和存储介质,能够根据获取的数据库表结构信息自动生成差异比对结果、并自动生成sql语句。该方法包括:获取源数据库与目标数据库的表结构信息;根据所述表结构信息对源数据库、目标数据库自动进行差异比对,生成差异比对结果;根据所述差异比对结果自动生成sql语句。通过以上步骤,能够显著提高数据库表结构的同步效率、降低编写sql语句的出错率。
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据库表结构的同步方法、装置、电子设备和存储介质。
背景技术
在电商等互联网企业采用数据库表结构存储数据的情形下,数据库表结构的设计和修改往往是一项非常繁琐的工程。尤其是,电商企业随着仓储系统的增多,经常会因为业务需求对数据库表结构做出适当的调整。时间一长,不同数据库中相同表的表结构会存在较大差异,进而给后期业务拓展带来诸多不便。因此,对不同数据库的表结构进行比对和同步的工作迫在眉睫。
在现有技术中,往往是在故障或危害等不利影响出现之后才能得知可能是数据库表结构不一致的问题。然后,由数据库运维人员手动查询源库和目标库、人工对比源库和目标库的差异,再主观判断修改风险性,最后手动编写sql(结构化查询语言)语句。由此可见,现有技术中针对数据库表结构问题的排查具有滞后性。并且,由于需要数据库运维人员手动查询、比对数据库表结构、手动编写sql语句,导致数据库表结构的同步效率低、出错率高。
发明内容
有鉴于此,本发明实施例提供一种数据库表结构的同步方法、装置和存储介质,能够根据获取的数据库表结构信息自动生成差异比对结果、并自动生成sql语句,以提高数据库表结构的同步效率、降低编写sql语句的出错率。
为实现上述目的,根据本发明的一个方面,提供了一种数据库表结构的同步方法。
本发明实施例的一种数据库表结构的同步方法包括:获取源数据库与目标数据库的表结构信息;根据所述表结构信息对源数据库、目标数据库自动进行差异比对,生成差异比对结果;根据所述差异比对结果自动生成sql语句。
可选地,所述表结构信息包括:表、列、索引的信息;所述差异比对结果包括:表的差异比对结果、列的差异比对结果、索引的差异比对结果。
可选地,根据所述表结构信息对源数据库、目标数据库自动进行差异比对,生成差异比对结果,还包括:在表结构信息中引入表、列、索引的状态属性;对源数据库、目标数据库的表结构信息进行遍历、比对,并根据比对出的表结构差异设置所述状态属性的取值。
可选地,根据所述差异比对结果自动生成sql语句,还包括:根据表的状态属性的取值的设置结果生成表的sql语句;根据列的状态属性的取值的设置结果生成列的sql语句,并将列的sql语句暂存于预先在内存中创建的上下文对象中;根据索引的状态属性的取值的设置结果生成索引的sql语句。
可选地,对源数据库、目标数据库的表结构信息进行遍历、比对,并根据比对出的表结构差异设置所述状态属性的取值,还包括:对表的信息进行遍历、比对,若表只存在于源数据库,则将该表的状态属性的取值设为ADDED;若表只存在于目标数据库,则将该表的状态属性的取值设为DELETED;若表在源数据库、目标数据库都存在,则将该表的状态属性设为UNKNOWN,并对该表中列的信息、索引的信息进行遍历;若列/索引只存在于源数据库,则将该列/索引的状态属性的取值设为ADDED,并将该列/索引所在表的状态属性的取值设为CHANGED;若列/索引只存在于目标数据库,则将该列/索引的状态属性的取值设为DELETED,并将该列/索引所在表的状态属性的取值设为CHANGED;若列/索引在源数据库、目标数据库都存在、且列/索引的属性都相同,则将列/索引的状态属性的取值设为SAME,若列/索引在源数据库、目标数据库都存在、且列/索引的属性不同,则将列/索引的状态属性的取值设为CHANGED。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710149902.5/2.html,转载请声明来源钻瓜专利网。