CN111752928A - 一种数据库对象迁移方法及系统 - Google Patents
一种数据库对象迁移方法及系统 Download PDFInfo
- Publication number
- CN111752928A CN111752928A CN202010614734.4A CN202010614734A CN111752928A CN 111752928 A CN111752928 A CN 111752928A CN 202010614734 A CN202010614734 A CN 202010614734A CN 111752928 A CN111752928 A CN 111752928A
- Authority
- CN
- China
- Prior art keywords
- database
- information
- source database
- constraint
- reading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库对象结构迁移系统及方法。该系统包括:读取模块,用于访问源数据库中的数据字典,从数据字典中读取源数据库对象的结构信息,将源数据库对象的结构信息映射成与之对应的面向对象中的类的对象;缓存模块,用于记录源数据库对象结构信息的状态,以及结构信息状态的更改;异构映射模块,用于将缓存的源数据库对象的结构信息修改为符合目标数据库标准且功能相同的对象结构信息;导出模块,用于将修改后的对象结构信息转换为符合目标数据库标准的脚本文件。本发明可适用于不同关系型数据库之间的数据库对象结构迁移,具有自动、批量、迁移信息全面的优点。
Description
技术领域
本发明属于数据库技术领域,更具体地,涉及一种数据库对象迁移方法及系统。
背景技术
关系型数据库被广泛使用,而不同的关系型数据库在再使用上也有着不同的侧重,以SqlServer和Mysql数据库为例,Sqlserver作为大中型数据库常用于大中型项目,Sqlserver功能较为完善,性能较强大的,但是Sqlserver对服务器的配置要求较高,且部署时间更长;而Mysql常用于中小型的项目中,虽然Mysql性能较弱,但是对服务器的配置要求较低。
出于成本等各方面因素的考虑,可能会出现用Mysql替换Sqlserver的情况,因此就有了将Sqlserver数据库迁移到Mysql数据库中的需求。
然而,当前具有数据库迁移功能的工具如Sqlserver studio management以及navicat等,在进行迁移的过程中或是需要手动调整不同数据库之间的字段类型映射,或是在迁移的过程中丢失重要的信息,如列自增,索引信息及约束信息等。
发明内容
针对现有技术的至少一个缺陷或改进需求,本发明提供了数据库对象迁移方法及系统,可适用于异构数据库之间数据库对象结构的迁移,具有自动、批量、迁移信息全面的优点。
为实现上述目的,按照本发明的第一方面,提供了一种数据库对象结构迁移系统,包括:
读取模块,用于访问源数据库中的数据字典,从数据字典中读取源数据库对象的结构信息,将源数据库对象的结构信息映射成与之对应的面向对象中的类的对象;
缓存模块,用于记录源数据库对象的结构信息的状态及结构信息状态的更改;
异构映射模块,用于将缓存的源数据库的对象结构信息修改为符合目标数据库标准且功能相同的对象结构信息;
导出模块,用于将修改后的对象结构信息转换为符合目标数据库标准的脚本文件。
优选地,所述读取模块包括:
表读取模块,用于读取源数据库的表信息,映射成面向对象中的表对象;
约束读取模块,用于读取源数据库的约束信息,映射成面向对象中的约束对象;
索引读取模块,用于读取源数据库的索引信息,映射成面向对象中的索引对象。
优选地,所述约束信息包括:主键约束、外键约束、唯一约束、默认约束和非空约束。
优选地,所述缓存模块,还用于根据约束信息对全部的表对象进行排序。
优选地,所述修改包括;
获取源数据库与目标数据库的数据类型映射关系;
遍历缓存的源数据库的对象结构信息,根据数据类型映射关系,将源数据库对象中的数据类型修改为符合目标数据库标准的数据类型。
优选地,所述源数据库为SqlServer数据库,所述目标数据库为Mysql数据库。
按照本发明的第二方面,提供了一种数据库对象迁移方法,包括步骤:
访问源数据库中的数据字典,从数据字典中读取源数据库对象的结构信息,将源数据库对象的结构信息映射成面向对象中的与之对应的类的对象;
记录源数据库对象的结构信息的状态及结构信息状态的更改;将缓存的源数据库中的对象结构修改为符合目标数据库标准的对象结构信息;
将修改后的对象结构信息转换为符合目标数据库标准的脚本文件。
总体而言,本发明与现有技术相比,具有有益效果:可以简单方便地进行不同数据库之间的数据迁移,在进行迁移的过程中不需要根据不同数据库之间的数据差异性进行手动调整,也不会在迁移的过程中丢失重要的信息,如列自增,索引信息及约束信息等。通过本发明可以实现从如Sqlserver数据库到Mysql等关系型数据库中常用对象,即表、约束(主键约束、外键约束、非空约束、唯一约束、默认约束)、索引(唯一索引、非唯一索引)的迁移。
附图说明
图1是本发明实施例的一种数据库对象结构迁移系统的示意图;
图2是本发明实施例的读取模块示意图;
图3是本发明实施例的缓存模块示意图;
图4是本发明实施例的异构映射模块示意图;
图5是本发明实施例的导出模块示意图;
图6是本发明实施例的一种数据库对象结构迁移方法的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例的一种数据库对象结构迁移系统,包括读取模块、缓存模块、异构映射模块和导出模块。读取模块,用于访问源数据库中的数据字典,从数据字典中读取源数据库对象的结构信息,将源数据库对象的结构信息映射成面向对象中与之对应的类的对象。缓存模块,用于记录源数据库对象结构信息的状态及结构信息状态的更改。异构映射模块,用于将缓存的源数据库对象的结构信息修改为符合目标数据库标准且功能相同的对象结构信息。导出模块,用于将修改后的对象结构信息转换为符合目标数据库标准的脚本文件。
以源数据库为Sqlserver数据,目标数据库为Mysql数据库为例具体说明。
优选地,如图2所示,读取模块包括表读取模块,用于读取源数据库的表信息,映射成表对象;约束读取模块,用于读取源数据库的约束信息,映射成约束对象;索引读取模块,用于读取源数据库的索引信息,映射成索引对象。
优选地,主键约束、外键约束、唯一约束、默认约束和非空约束。
如图6所示,数据库对象结构迁移系统的工作原理如下。
S61:步骤S61是第一步,获取到源数据库(Sqlserver数据库)的连接参数,可通过配置文件等方式获取到数据库连接参数。
S62:获取连接参数后操作访问数据库,本实施例中可采用ado.net的方式访问数据库。
S63:能够访问Sqlserver数据库后,表读取模块读取Sqlserver数据库的数据字典,获取表的结构信息,包括表名、列名、列数据类型、列是否为空、列是否自增。在本实施例中可通过sql语句,获取上述的表结构信息。
在读取数据字典中的表结构信息后,将其存入表对应的类的对象中,如图3为实施例中使用的类。首次读取表结构信息时只读取了表名、列名、列数据类型、列是否为空、列是否自增信息。此外在创建表的类的对象时为每一个表对象分配一个不重复的数字编号。
表的类中包含了表名、列字典、约束字典、索引字典、子表字典、父表字典。
列的类中包含了列名、列的数据类型、列可为空、列是否自增。
S64:读取了表列信息之后,约束读取模块执行sql语句便可读取表的主键信息。
主键类中包含了主键名、主键约束的表、列字典。若主键所属的表中存在自增列,则将该列添加到主键中。遍历表集合,若某表存在自增列且无主键,则将新增主键,主键的列为自增列。最后将主键对象添加到所属表的约束集合中。
S65:约束读取模块执行sql语句可从数据字典中查询到所有外键信息。
将查询到的外键信息放入到外键对应的类的对象中,外键的类的包含的信息包括外键名、外键所属的表,外键中被引用的表、<引用表的列,被引用表的列>两者之间的映射集合。最后将外键添加到所属表的约束集合中。
S66:约束读取模块执行sql可读取默认约束信息。
在Sqlserver数据库中针对不同的数据类型(常用的数字、字符串、日期),在数据字典中存放的格式不同,因此需要从不同格式的字符串中提取中默认值,在本实施例中通过设置正则表达式pattern对数字、字符串、日期、当前时间四种类型的默认值进行提取。其中数字类型的pattern为“\.*\d+\.*\d*”,字符串类型的pattern为“'.*'”,日期类型的pattern为“(\d+[-/:]\s?)+”,当前时间的pattern为“getdate()”。查询到的默认约束信息放入到默认约束对应的类的对象中,默认约束类包含的信息为默认约束名、默认约束所属的表、默认约束的默认值、默认约束包含的列。最后将默认约束添加到所属表的约束集合中。
S66中,约束读取模块还需要读取源数据库中的唯一约束信息。
在Sqlserver数据库中在创建主键约束时会默认创建唯一约束,在本实施例中排除了创建主键时默认创建的唯一约束。
将查询到的唯一约束信息存入唯一约束对应的类的对象中。唯一约束的类中包含的信息包括唯一约束名称、唯一约束所属的表、唯一约束包含的列。最后将唯一约束添加到所属表的约束集合中。
S66中,非空约束读取模块在读取列信息的时即可实现。
S67:索引读取模块执行sql获取索引的相关信息。
至此读取模块已经从Sqlserver数据字典中读取了表、列、约束、索引等信息。由于Sqlserver数据字典包含了多个表,每个表有对应的约束、索引信息,因此表、约束、索引数据间是存在对应关系,缓存模块按照表、约束、索引之间的对应关系,将表、约束、索引缓存起来。这些对象之间的相互关系如图2所示,这些对象是以表为中心的。表中包含了列的信息、表的约束信息、表的索引信息,表之间的相互引用关系(父表、子表)。
由于表之间存在外键(引用),需使被引用表先于引用表生成,来确保目标数据库被成功建立。因此缓存模块,还用于根据约束信息对抽象的多个表对象进行排序。
S68:循环遍历表的集合,若某表的父表编号大于该表,则交换该表与父表的编号;若某表的子表编号小于该表,则交换该表与子表的编号;若本次遍历中不存在编号交换则停止循环。
S69:以表为中心,按照表的编号顺序遍历表对象,异构映射模块将缓存的源数据库对象的结构信息修改为符合目标数据库标准的对象结构信息。
具体地,可获取源数据库与目标数据库的数据类型映射关系;遍历缓存的源数据库对象的结构信息,根据数据类型映射关系,将源数据库对象的结构信息的数据类型修改为符合目标数据库标准的数据类型。
如图4所示,例如Sqlserver数据库中包括nchar数据类型,Mysql不包括nchar数据类型,只包括char类型。建立映射关系表,将nchar数据类型映射为char数据类型。根据此映射关系,将Sqlserver数据库对象结构中的nchar数据类型全部替换为char数据类型;SqlServer中字符串最大长度Max在数据字典中对应的是-1,而Mysql中最大字符串长度为65535,这里取63000等。
S69中,将修改后的对象结构集合转化为创建Mysql对象结构的sql语句。如图5所示,导出模块遍历表集合,生成表的创建sql语句,创建表的索引对象sql,创建表的约束对象sql。
建表sql需要的参数包括表名、列名、列类型(包含长度)、自增、可空在表对象中已经包含,可按照Mysql语法规范,将表对象转化为相应的建表语句。
创建索引需要的参数包括索引名、表名、列集合、是否唯一等参数已经存在于索引对象中,可按照Mysql语法规范,将索引对象转化为相应的创建索引语句。
创建主键需要的参数包括表名、列集合已经存在于主键对象中,可按照Mysql语法规范,将主键对象转化为相应的创建主键语句。
创建外键需要的参数包括外键名、引用表名、引用表列集合、被引用表名、被引用表列集合已经存在于外键对象中,可按照Mysql语法规范,将外键对象转化为相应的创建外键语句。
创建默认约束需要的参数包括表名、列名、默认值已经存在于默认约束对象中,可按照Mysql语法规范,将默认约束对象转化为相应的创建默认约束语句。
创建唯一约束需要的参数包括表名、列集合已经存在于唯一约束对象中,可按照Mysql语法规范,将唯一约束对象转化为相应的创建唯一约束语句。
注意,若表包含自增列,则将主键创建在建表语句中。
至此,库中的表、约束、索引创建脚本已经生成完毕。
创建完毕后在Mysql执行创建的脚本文件即可将数据从Sqlserver数据库迁移到Mysql数据库。
本发明实施例的一种数据库对象结构迁移方法,包括步骤:
访问源数据库中的数据字典,从数据字典中读取源数据库对象的结构信息,将源数据库对象的结构信息映射成与之对应的面向对象中的类的对象;
记录源数据库对象的结构信息的状态及结构信息状态的更改;将缓存的源数据库对象的结构信息修改为符合目标数据库标准的对象结构信息;
将修改后的对象结构信息转换为符合目标数据库标准的脚本文件。
数据库对象迁移方法的实现原理、技术效果与上述方法数据库对象结构迁移系统类似,此处不再赘述。
必须说明的是,上述任一实施例中,方法并不必然按照序号顺序依次执行,只要从执行逻辑中不能推定必然按某一顺序执行,则意味着可以以其他任何可能的顺序执行。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据库对象结构迁移系统,其特征在于,包括:
读取模块,用于访问源数据库中的数据字典,从数据字典中读取源数据库对象的结构信息,将源数据库对象的结构信息映射成与之对应的面向对象中的类的对象;
缓存模块,用于记录源数据库对象的结构信息的状态及结构信息状态的更改;
异构映射模块,用于将缓存的源数据库的对象结构信息修改为符合目标数据库标准且功能相同的对象结构信息;
导出模块,用于将修改后的对象结构信息转换为符合目标数据库标准的脚本文件。
2.如权利要求1所述的一种数据库对象结构迁移系统,其特征在于,所述读取模块包括:
表读取模块,用于读取源数据库的表信息,映射成面向对象中的表对象;
约束读取模块,用于读取源数据库的约束信息,映射成面向对象中的约束对象;
索引读取模块,用于读取源数据库的索引信息,映射成面向对象中的索引对象。
3.如权利要求2所述的一种数据库对象结构迁移系统,其特征在于,所述约束信息包括:主键约束、外键约束、唯一约束、默认约束和非空约束。
4.如权利要求2所述的一种数据库对象结构迁移系统,其特征在于,所述缓存模块,还用于根据约束信息对全部的表对象进行排序。
5.如权利要求1、2、3或4任一项所述的一种数据库对象结构迁移系统,其特征在于,所述修改包括;
获取源数据库与目标数据库的数据类型映射关系;
遍历缓存的源数据库的对象结构信息,根据数据类型映射关系,将源数据库对象中的数据类型修改为符合目标数据库标准的数据类型。
6.如权利要求1、2、3或4任一项所述的一种数据库对象结构迁移系统,其特征在于,所述源数据库为SqlServer数据库,所述目标数据库为Mysql数据库。
7.一种数据库对象结构迁移方法,其特征在于,包括步骤:
访问源数据库中的数据字典,从数据字典中读取源数据库对象的结构信息,将源数据库对象的结构信息映射成面向对象中的与之对应的类的对象;
记录源数据库对象的结构信息的状态及结构信息状态的更改;将缓存的源数据库中的对象结构修改为符合目标数据库标准的对象结构信息;
将修改后的对象结构信息转换为符合目标数据库标准的脚本文件。
8.如权利要求7所述的一种数据库对象结构迁移方法,其特征在于,所述读取包括步骤:
读取源数据库的表信息,映射成面向对象中的表对象;
读取源数据库的约束信息,映射成面向对象中的约束对象;
读取源数据库的索引信息,映射成面向对象中的索引对象。
9.如权利要求8所述的一种数据库对象结构迁移方法,其特征在于,所述存储还包括步骤:根据约束信息对全部表对象进行排序。
10.如权利要求7、8或9任一项所述的一种数据库对象结构迁移方法,其特征在于,所述修改包括步骤;
获取源数据库与目标数据的数据类型映射关系;
遍历缓存的源数据库对象的结构信息,根据数据类型映射关系,将源数据库对象中的数据类型修改为符合目标数据库标准的数据类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614734.4A CN111752928A (zh) | 2020-06-30 | 2020-06-30 | 一种数据库对象迁移方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614734.4A CN111752928A (zh) | 2020-06-30 | 2020-06-30 | 一种数据库对象迁移方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752928A true CN111752928A (zh) | 2020-10-09 |
Family
ID=72676741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614734.4A Pending CN111752928A (zh) | 2020-06-30 | 2020-06-30 | 一种数据库对象迁移方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752928A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749151A (zh) * | 2021-01-13 | 2021-05-04 | 叮当快药科技集团有限公司 | 不同类型数据库间的数据迁移方法、装置及存储介质 |
CN114860694A (zh) * | 2022-07-05 | 2022-08-05 | 东方电气风电股份有限公司 | 一种风电场监控系统异步协同数据迁移方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631907A (zh) * | 2013-11-26 | 2014-03-12 | 中国科学院信息工程研究所 | 一种将关系型数据迁移至HBase的方法及系统 |
CN105373599A (zh) * | 2015-10-28 | 2016-03-02 | 北京汇商融通信息技术有限公司 | 基于多种数据存储平台的数据迁移系统 |
CN107958057A (zh) * | 2017-11-29 | 2018-04-24 | 苏宁云商集团股份有限公司 | 一种用于异构数据库中数据迁移的代码生成方法及装置 |
CN107992512A (zh) * | 2017-10-20 | 2018-05-04 | 中国建设银行股份有限公司上海市分行 | 一种数据迁移的方法、系统及计算机可读存储介质 |
CN108509556A (zh) * | 2018-03-22 | 2018-09-07 | 上海达梦数据库有限公司 | 数据迁移方法和装置、服务器、存储介质 |
CN109299332A (zh) * | 2018-11-02 | 2019-02-01 | 芜湖智久机器人有限公司 | 一种将类和数据库映射的方法、装置及存储介质 |
-
2020
- 2020-06-30 CN CN202010614734.4A patent/CN111752928A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631907A (zh) * | 2013-11-26 | 2014-03-12 | 中国科学院信息工程研究所 | 一种将关系型数据迁移至HBase的方法及系统 |
CN105373599A (zh) * | 2015-10-28 | 2016-03-02 | 北京汇商融通信息技术有限公司 | 基于多种数据存储平台的数据迁移系统 |
CN107992512A (zh) * | 2017-10-20 | 2018-05-04 | 中国建设银行股份有限公司上海市分行 | 一种数据迁移的方法、系统及计算机可读存储介质 |
CN107958057A (zh) * | 2017-11-29 | 2018-04-24 | 苏宁云商集团股份有限公司 | 一种用于异构数据库中数据迁移的代码生成方法及装置 |
CN108509556A (zh) * | 2018-03-22 | 2018-09-07 | 上海达梦数据库有限公司 | 数据迁移方法和装置、服务器、存储介质 |
CN109299332A (zh) * | 2018-11-02 | 2019-02-01 | 芜湖智久机器人有限公司 | 一种将类和数据库映射的方法、装置及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749151A (zh) * | 2021-01-13 | 2021-05-04 | 叮当快药科技集团有限公司 | 不同类型数据库间的数据迁移方法、装置及存储介质 |
CN114860694A (zh) * | 2022-07-05 | 2022-08-05 | 东方电气风电股份有限公司 | 一种风电场监控系统异步协同数据迁移方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8612468B2 (en) | System and method for retrieving data from a relational database management system | |
US7739251B2 (en) | Incremental maintenance of an XML index on binary XML data | |
Bertino et al. | Index organizations for object-oriented database systems | |
US7281206B2 (en) | Maintenance of a markup language document in a database | |
US8103704B2 (en) | Method for database consolidation and database separation | |
EP0360387B1 (en) | Data base management system | |
EP1234258B1 (en) | System for managing rdbm fragmentations | |
US11789923B2 (en) | Compression units in an index block | |
CN109840256A (zh) | 一种基于业务实体的查询实现方法 | |
Lanzelotte et al. | Optimization of nonrecursive queries in OODBs | |
CN111752928A (zh) | 一种数据库对象迁移方法及系统 | |
CN101710336A (zh) | 一种利用关系中间件加速数据处理的方法 | |
CN113094449A (zh) | 基于分布式键值库的大规模知识图谱存储方案 | |
US20070220420A1 (en) | System and method for efficient maintenance of indexes for XML files | |
CN115329504A (zh) | 一种基于复杂产品结构的bom构建方法 | |
CN110109951B (zh) | 一种关联查询的方法、数据库应用系统及服务器 | |
CN115840751B (zh) | 一种新型树状数据的编码方法 | |
EP1405217A1 (en) | A flexible virtual database system including a hierarchical application parameter repository | |
US20050060307A1 (en) | System, method, and service for datatype caching, resolving, and escalating an SQL template with references | |
CN114861229B (zh) | 一种Hive动态脱敏方法及系统 | |
Černjeka et al. | NoSQL document store translation to data vault based EDW | |
US11216438B2 (en) | Database creation and collision reduction | |
CN111752546A (zh) | 一种基于Excel的数据库对象设计管理平台、系统及方法 | |
Shekita | High Performance Implementation Techniques for Next Generation Database Systems | |
CN113779955B (zh) | 一种差异脚本的生成方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |