[发明专利]数据库表结构的同步方法、装置、电子设备和存储介质有效
申请号: | 201710149902.5 | 申请日: | 2017-03-14 |
公开(公告)号: | CN108572996B | 公开(公告)日: | 2021-02-26 |
发明(设计)人: | 吴明波 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F16/27 | 分类号: | G06F16/27;G06F16/22 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张一军;姜劲 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 结构 同步 方法 装置 电子设备 存储 介质 | ||
1.一种数据库表结构的同步方法,其特征在于,包括:
获取源数据库与目标数据库的表结构信息;其中,所述表结构信息包括:表、列、索引的信息;
根据所述表结构信息对源数据库、目标数据库自动进行差异比对,根据比对出的表结构差异设置表、列、索引的状态属性的取值;
根据所述状态属性的取值自动生成sql语句;
其中,所述根据所述状态属性的取值自动生成sql语句包括:在表的状态属性的取值为修改时,根据列的状态属性的取值生成列的sql语句,并将列的sql语句暂存于预先在内存中创建的上下文对象中;遍历索引的状态属性的取值,若索引的状态属性的取值为增加或删除,且该索引是主键且有自增列,则查询上下文对象是否存在该自增列的sql语句;若上下文对象中存在该自增列的sql语句,则先将该自增列的sql语句从上下文对象中删除,再生成该索引的sql语句。
2.根据权利要求1所述的方法,其特征在于,所述根据所述表结构信息对源数据库、目标数据库自动进行差异比对,根据比对出的表结构差异设置表、列、索引的状态属性的取值包括:
对表的信息进行遍历、比对,若表只存在于源数据库,则将该表的状态属性的取值设为增加;若表只存在于目标数据库,则将该表的状态属性的取值设为删除;若表在源数据库、目标数据库都存在,对该表中列的信息、索引的信息进行遍历;
若列/索引只存在于源数据库,则将该列/索引的状态属性的取值设为增加,并将该列/索引所在表的状态属性的取值设为修改;若列/索引只存在于目标数据库,则将该列/索引的状态属性的取值设为删除,并将该列/索引所在表的状态属性的取值设为修改;若列/索引在源数据库、目标数据库都存在、且列/索引的属性都相同,则将列/索引的状态属性的取值设为相同,若列/索引在源数据库、目标数据库都存在、且列/索引的属性不同,则将列/索引的状态属性的取值设为修改。
3.根据权利要求1所述的方法,其特征在于,所述根据所述状态属性的取值自动生成sql语句还包括:
若表的状态属性的取值为增加,则生成新建表的sql语句;若表的状态属性的取值为删除,则生成删除表的sql语句。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在表结构信息中引入表的sql属性,并将生成的表、列、索引的sql语句保存至所述sql属性中。
5.一种数据库表结构的同步装置,其特征在于,包括:
获取模块,用于获取源数据库与目标数据库的表结构信息;其中,所述表结构信息包括:表、列、索引的信息;
差异比对模块,用于根据所述表结构信息对源数据库、目标数据库自动进行差异比对,根据比对出的表结构差异设置表、列、索引的状态属性的取值;
sql语句生成模块,用于根据所述状态属性的取值自动生成sql语句;
其中,所述sql语句生成模块根据所述状态属性的取值自动生成sql语句包括:在表的状态属性的取值为修改时,根据列的状态属性的取值生成列的sql语句,并将列的sql语句暂存于预先在内存中创建的上下文对象中;遍历索引的状态属性的取值,若索引的状态属性的取值为增加或删除,且该索引是主键且有自增列,则查询上下文对象是否存在该自增列的sql语句;若上下文对象中存在该自增列的sql语句,则先将该自增列的sql语句从上下文对象中删除,再生成该索引的sql语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710149902.5/1.html,转载请声明来源钻瓜专利网。