CN117194385A - 一种不同类型关系数据库间的数据迁移方法 - Google Patents
一种不同类型关系数据库间的数据迁移方法 Download PDFInfo
- Publication number
- CN117194385A CN117194385A CN202311318041.0A CN202311318041A CN117194385A CN 117194385 A CN117194385 A CN 117194385A CN 202311318041 A CN202311318041 A CN 202311318041A CN 117194385 A CN117194385 A CN 117194385A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- definition
- dependency
- table structure
- 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
- 238000013508 migration Methods 0.000 title claims abstract description 43
- 230000005012 migration Effects 0.000 title claims abstract description 43
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000008676 import Effects 0.000 claims abstract description 8
- 238000005516 engineering process Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 14
- 238000012986 modification Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 7
- 238000013506 data mapping Methods 0.000 description 3
- 238000013499 data model Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种不同类型关系数据库间的数据迁移方法,所述方法包括:a、通过访问源数据库数据字典,获取需迁移数据集涉及的表结构和数据依赖关系;b、通过获取到的表结构和数据依赖信息,利用ORM将源数据库中需要进行迁移的数据表结构影射成计算机高级语言中的类对象定义,同时利用元对象编程技术将数据表结构定义信息作为属性添加至对应的类对象中,不针对数据表结构另外生成配置文件。相对于现有技术,本发明能够通过读取数据字典,获取数据表之间的依赖关系,并根据依赖关系(依赖少的在前,对其他依赖的在后)顺序进行数据库数据表建立以及数据的导入,可确保导入数据在目的数据库中的完整性和一致性。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种Oracle到人大金仓、达梦数据库等国产化数据库之间的数据迁移方法。
背景技术
当前主要的数据库数据迁移方法有以下三种方式:1)通过ODBC接口实现,采用该方式数据访问效率较低,实践过程中在没有厂家提供相关针对性的驱动的情况下只是在理论上可行;2)通过数据库厂家提供的数据迁移工具,例如达梦数据库在安装完成后提供从Oracle数据库迁移到达梦数据库的迁移工具,但该工具在使用过程中存在一些不足,例如:在Oracle下分属在两个方案的数据表之间的外键关联,无法有效迁移至达梦数据库;3)源数据库导出SQL脚本,并导入到目标数据库,此数据导入导出方法主要针对数据量较小场景下的数据迁移,且生成SQL语句时未考虑数据间的依赖关系,同时生成的SQL语句存在兼容性风险。
随着国产数据库厂家产品的进步,越来越多的项目出于成本、售后、客户要求等多方面因素,在项目设计过程中采用国产化数据库为系统提供数据访问服务。由于数据库之间表结构设计以及库结构等方面存在差异,需要采取一种方法,快速、正确、高效地实现数据库数据结构、内容及其系统的平滑迁移。
发明内容
本发明要解决的技术问题是弥补上述现有技术的缺陷,为解决上述问题,提供一种简单高效的数据迁移方法,在使用过程中对用户数据库专业技能要求不高;操作步骤简洁;迁移方式为过程方式,如果出现迁移失败可直观获取失败位置和失败原因;被迁移数据经过加密后采用xml文件进行存储和传递满足用户对数据安全性的需求。
本发明的目的是以下述方式实现的:
一种不同类型关系数据库间的数据迁移方法,所述方法包括:
a)通过访问源数据库数据字典,获取需迁移数据集涉及的表结构和数据依赖关系;
b)通过获取到的表结构和数据依赖信息,利用ORM将源数据库中需要进行迁移的数据表结构影射成计算机高级语言中的类对象定义,同时利用元对象编程技术将数据表结构定义信息作为属性添加至对应的类对象中,不针对数据表结构另外生成配置文件;
c)对步骤b)中提及的每个类对象,提供xml数据流的导入、导出接口,并在该接口处实现数据的加密与解密功能,同时针对每个数据表对应的类对象实例集合提供xml文件的读、写访问接口;
d)在ORM数据访问层分别对需要进行数据迁移的源数据库和目的数据库进行试配,使之通过运行参数的修改可以对相关不同类型数据库进行正常的数据读写操作;
e)通过ORM数据访问层访问需要进行数据迁移的源数据库,通过步骤a)中的数据依赖关系,按依赖的先后顺序,与其他表存在依赖关系较少的表在前,依次调用c)步骤中的xml数据流导出接口和xml文件的写入接口,以数据表为单位将数据以xml文件的方式进行导出,并保存在指定的外部存储器上;
f)读取b)步骤中的存储在类对象中的数据表结构定义信息,根据数据迁移的目的数据库类型,生成对应的DDL,提交目的数据库执行生成与源数据库结构定义完全一致的数据库定义结构;
g)通过ORM数据访问层访问需要进行数据迁移的目的数据库,通过步骤a)中的数据依赖关系,按依赖的先后顺序,与其他表存在依赖关系较少的表在前,以数据表为单位,依次调用c)步骤中的xml文件读取和xml数据流导入接口在内存中创建贮存数据表的数据集合,并将数据集合通过ORM数据访问层依次插入至目的数据库中,最终完成数据和数据存储方案在不同类型数据库之间的迁移。
所述步骤b中的相关表信息包括表结构定义、数据列注释、主键定义、外键定义、数据约束和触发器定义。
本发明的有益效果:相对于现有技术,本发明能够通过读取数据字典,获取数据表之间的依赖关系,并根据依赖关系(依赖少的在前,对其他依赖的在后)顺序进行数据库数据表建立以及数据的导入,可确保导入数据在目的数据库中的完整性和一致性;
在本ORM数据访问层的实现过程中,通过采用元对象编程技术,将表结构定义、数据列注释、主键定义、外键定义、数据约束、触发器等定义在类对象内部,作为程序代码的一部分,可有效减少工具涉及的配置文件数量,减小数据库机构被篡改的风险;
使用ORM技术,可有效利用项目的当前代码资产,同时将数据库数据表示与数据库访问分开,使得工具可灵活试配多种不同类型数据库;
在数据迁移过程中以表为基本单位,在数据导入失败时,可以明确指示出故障涉及到的数据表,方便对错误进行精确分析;
数据库数据以xml文件的形式进行保存和传递满足了系统离线升级的需要;
通过在表述数据的类对象的xml流导入、导出中增加数据加密、解密功能,满足用户对数据的保密要求。
附图说明
图1是本发明中数据迁移工具示意图。
图2是数据迁移过程示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
应该指出,以下详细说明都是例式性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的技术含义相同。
一种不同类型关系数据库间的数据迁移方法,所述方法包括:
a)通过访问源数据库数据字典,获取需迁移数据集涉及的表结构和数据依赖关系;
b)通过获取到的表结构和数据依赖信息,遵循“约定优于配置”原则,利用ORM技术将源数据库中需要进行迁移的数据表结构影射成计算机高级语言中的类对象定义,同时利用元对象编程技术将数据表结构定义信息作为属性添加至对应的类对象中,不针对数据表结构另外生成配置文件;
c)对步骤b)中提及的每个类对象,提供xml数据流的导入、导出接口,并在该接口处实现数据的解密与加密功能,同时针对每个数据表对应的类对象实例集合提供xml文件的读、写访问接口;
d)在ORM数据访问层分别对需要进行数据迁移的源数据库和目的数据库进行试配,使之通过运行参数的修改可以对相关不同类型数据库进行正常的数据读写操作;
e)通过ORM数据访问层访问需要进行数据迁移的源数据库,通过步骤a)中的数据依赖关系,按依赖的先后顺序,与其他表存在依赖关系较少的表在前,依次调用c)步骤中的xml数据流导出接口和xml文件的写入接口,以数据表为单位将数据以xml文件的方式进行导出,并保存在指定的外部存储器上;
f)读取b)步骤中的存储在类对象中的数据表结构定义信息,根据数据迁移的目的数据库类型,生成对应的DDL(数据定义语句),提交目的数据库执行生成与源数据库结构定义完全一致的数据库定义结构;
g)通过ORM数据访问层访问需要进行数据迁移的目的数据库,通过步骤a)中的数据依赖关系,按依赖的先后顺序,与其他表存在依赖关系较少的表在前,以数据表为单位,依次调用c)步骤中的xml文件读取和xml数据流导入接口在内存中创建贮存数据表的数据集合,并将数据集合通过ORM数据访问层依次插入至目的数据库中,最终完成数据和数据存储方案在不同类型数据库之间的迁移。
所述步骤b中的相关表信息包括表结构定义、数据列注释、主键定义、外键定义、数据约束和触发器定义。
在某课题项目实施过程中,相关数据需要从Oracle数据库完整迁移到达梦数据库和人大金仓数据库中。
由于原项目应用数据描述与数据存取部分采用自研的基于.NET框架的ORM框架,在该ORM框架中:方案名称、表名称等以自定义属性方式修饰对应的数据影射类;列名称、数据类型、数据长度、是否为主键、列注释等以自定义属性的方式修饰对应的数据影射类的属性。显而易见,通过读取上述自定义属性中的参数取值,ORM数据访问层可以根据需要生成对应的DDL(数据定义语句)和DML(数据操做语句),通过向特定数据库提交生成的相关语句可以实现特定的数据表建立、定义外键约束和数据读取、插入等功能。
数据表之间依赖先后顺序的体现没有通过配置文件或在数据影射类中定义属性进行表述,而是在读取数据表主外键关系后,通过在自动生成的代码中按照依赖先后顺序调用上文步骤c)中提及的文件读写接口和xml导入、导出接口的方式进行体现。
该工具的功能框架如图1所示,其中:
“数据数据库读取与本地化存储代码自动生成工具①”是针对迁移工具编制的代码自动生成工具,按数据依赖关系自动生成从源数据库中读取数据并以xml文件方式保存在本地的代码;
“数据本地读取与数据数据库写入代码自动生成工具②”是针对迁移工具编制的代码自动生成工具,按数据依赖关系自动生成从本地保存的xml文件中读取数据,按依赖关系插入到目的数据库中的代码;
“数据库数据读取③”是“数据数据库读取与本地化存储代码自动生成工具①”实现的按顺序从源数据库中读取数据的功能;
“数据本地存储④”是“数据数据库读取与本地化存储代码自动生成工具①”实现的将“数据库数据读取③”读取出的数据保存至本地xml文件的功能;
“数据库数据写入⑤”是“数据本地读取与数据数据库写入代码自动生成工具②”实现的从“数据本地读取⑥”读取的数据保存至目的数据库的功能;
“数据本地读取⑥”是“数据本地读取与数据数据库写入代码自动生成工具②”实现的从“数据本地存储④”生成的xml文件中读取数据的功能;
“数据字典适配层⑦”是将不同类型数据库数据字典定义按预定义接口提供给“数据数据库读取与本地化存储代码自动生成工具①”和“数据本地读取与数据数据库写入代码自动生成工具②”,同时根据源数据库中的外键定义,生成目的数据库外键定义、触发器定义和约束检查等SQL语句的功能;
“ORM数据表示层⑧”,通过自定义属性的方式,提供数据表结构定义功能,同时将数据库中的数据影射成数据模型类实例集合;
“数据库读写访问层⑨”,数据库读写访问的操作接口;
“数据库属性配置⑩”,源数据库与目的数据库的配置信息,主要包括数据库自身的URL、使用的通信端口,数据库类型等。
数据迁移流程分为两部分,分别是:待迁移数据表结构、依赖关系以及相关数据备份、数据恢复功能代码的自动生成与生效,包括下面的a)、b)、c)等步骤;数据迁移实施,包括下面的d)、e)、f)、g)、h)等步骤。
数据迁移的流程如下所示:
a)数据库数据备份代码的自动生成:“数据数据库读取与本地化存储代码自动生成工具①”根据“数据字典适配层⑦”读取数据库相关数据表的依赖关系,根据依赖程度,按定义好的xml导出接口和文件保存接口生成数据的备份代码,并将相关代码复制至数据迁移工具软件的特定位置,实现“数据库数据读取③”和“数据本地存储④”功能;
b)数据库数据恢复代码的自动生成:“数据本地读取与数据数据库写入代码自动生成工具②”根据“数据字典适配层⑦”读取数据库相关数据表的依赖关系,根据依赖程度,按定义好的文件读取接口和xml导入接口生成数据的恢复代码,并将相关代码复制至数据迁移工具软件的特定位置,实现“数据库数据写入⑤”和“数据本地读取⑥”功能;
c)对数据迁移工具进行编译,使得a)步骤和b)步骤中自动生成的代码生效;
d)源数据库中数据的导出与本地保存:执行步骤a)生成的代码,通过“数据库数据读取③”顺序从源数据库中读取数据,通过“数据本地存储④”对数据进行加密,并以xml文件的方式保存在本地;
e)目的数据库数据定义语言的生成与提交:“数据字典适配层⑦”读取源数据库中需同步数据表之间的关系,按依赖关系,“ORM数据表示层⑧”通过数据模型类中的自定义属性中包括的数据库表结构信息,生成DDL建表语句,通过“数据库读写访问层⑨”提交至目的数据库连接,在目的数据库中完成建表工作;
f)数据依赖关系定义:“数据字典适配层⑦”读取源数据库中需同步数据表之间的关系,按依赖关系(主外键关系),生成建立外键的DDL,通过“数据库读写访问层⑨”提交至目的数据库连接,在目的数据库中完成外键约束的创建;
g)数据读取:执行a)步骤生成的代码,将从d)步骤中保存在xml文件中的数据通过“数据本地读取⑥”进行解密,并读取数据至内存中,此时表数据以数据模型类实例集合的方式保存在内存中;
h)数据迁移:执行b)步骤生成的代码,将读取至内存中数据表数据通过“数据库数据写入⑤”插入至目的数据库中完成相关数据的迁移。
上述步骤的概述说明示意如图2所示。
以上所述的仅是本发明的优选实施方式,应当指出,对于本领域的技术人员来说,在不脱离本发明整体构思前提下,还可以做出若干改变和改进,这些也应该视为本发明的保护范围。
Claims (2)
1.一种不同类型关系数据库间的数据迁移方法,其特征在于:所述方法包括:
a) 通过访问源数据库数据字典,获取需迁移数据集涉及的表结构和数据依赖关系;
b) 通过获取到的表结构和数据依赖信息,利用ORM将源数据库中需要进行迁移的数据表结构影射成计算机高级语言中的类对象定义,同时利用元对象编程技术将数据表结构定义信息作为属性添加至对应的类对象中,不针对数据表结构另外生成配置文件;
c) 对步骤b)中提及的每个类对象,提供xml数据流的导入、导出接口,并在该接口处实现数据的解密与加密功能,同时针对每个数据表对应的类对象实例集合提供xml文件的读、写访问接口;
d) 在ORM数据访问层分别对需要进行数据迁移的源数据库和目的数据库进行试配,使之通过运行参数的修改可以对相关不同类型数据库进行正常的数据读写操作;
e) 通过ORM数据访问层访问需要进行数据迁移的源数据库,通过步骤a)中的数据依赖关系,按依赖的先后顺序,与其他表存在依赖关系较少的表在前,依次调用c)步骤中的xml数据流导出接口和xml文件的写入接口,以数据表为单位将数据以xml文件的方式进行导出,并保存在指定的外部存储器上;
f) 读取b)步骤中的存储在类对象中的数据表结构定义信息,根据数据迁移的目的数据库类型,生成对应的DDL,提交目的数据库执行生成与源数据库结构定义完全一致的数据库定义结构;
g) 通过ORM数据访问层访问需要进行数据迁移的目的数据库,通过步骤a)中的数据依赖关系,按依赖的先后顺序,与其他表存在依赖关系较少的表在前,以数据表为单位,依次调用c)步骤中的xml文件读取和xml数据流导入接口在内存中创建贮存数据表的数据集合,并将数据集合通过ORM数据访问层依次插入至目的数据库中,最终完成数据和数据存储方案在不同类型数据库之间的迁移。
2.根据权利要求1所述的不同类型数据库间的数据迁移方法,其特征在于:所述步骤b中的相关表信息包括表结构定义、数据列注释、主键定义、外键定义、数据约束和触发器定义。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311318041.0A CN117194385A (zh) | 2023-10-12 | 2023-10-12 | 一种不同类型关系数据库间的数据迁移方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311318041.0A CN117194385A (zh) | 2023-10-12 | 2023-10-12 | 一种不同类型关系数据库间的数据迁移方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117194385A true CN117194385A (zh) | 2023-12-08 |
Family
ID=88994314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311318041.0A Pending CN117194385A (zh) | 2023-10-12 | 2023-10-12 | 一种不同类型关系数据库间的数据迁移方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117194385A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117851434A (zh) * | 2024-03-07 | 2024-04-09 | 深圳市雁联计算系统有限公司 | 一种数据库并发移植的方法、系统及存储介质 |
-
2023
- 2023-10-12 CN CN202311318041.0A patent/CN117194385A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117851434A (zh) * | 2024-03-07 | 2024-04-09 | 深圳市雁联计算系统有限公司 | 一种数据库并发移植的方法、系统及存储介质 |
CN117851434B (zh) * | 2024-03-07 | 2024-05-14 | 深圳市雁联计算系统有限公司 | 一种数据库并发移植的方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6151608A (en) | Method and system for migrating data | |
US8205189B2 (en) | Method and system for definition control in a data repository application | |
US7979456B2 (en) | Method of managing and providing parameterized queries | |
US20040215629A1 (en) | Data abstraction model driven physical layout | |
US20050234934A1 (en) | System and method for controlling the release of updates to a database configuration | |
WO2012051389A1 (en) | Method and system for developing data integration applications with reusable semantic types to represent and process application data | |
Dittrich et al. | An event/trigger mechanism to enforce complex consistency constraints in design databases | |
CN117194385A (zh) | 一种不同类型关系数据库间的数据迁移方法 | |
CN112764743B (zh) | 一种基于数据模型驱动自动生成软件的方法 | |
US11409505B1 (en) | Automated authoring of software solutions from a data model with related patterns | |
Pettit et al. | The MySQL Workshop: A practical guide to working with data and managing databases with MySQL | |
Nestor | Toward a persistent object base | |
bin Uzayr | Mastering MySQL for Web: A Beginner's Guide | |
US11693652B2 (en) | Automated authoring of software solutions from a data model | |
CN103180848B (zh) | 一种用于复制数据的系统和方法 | |
Bai | SQL Server Database Programming with Java: Concepts, Designs and Implementations | |
CN112905453A (zh) | 自动化测试中数据库操作代码快速生成的方法 | |
US20080022258A1 (en) | Custom database system and method of building and operating the same | |
JP3730556B2 (ja) | データベース管理システム | |
US20100070954A1 (en) | Custom database system and method of building and operating the same | |
CN115794967B (zh) | 关系数据映射与语义本体同步生成方法及装置 | |
Sun et al. | Toward an Integrated Tool Environment for Static Analysis of UML Class and Sequence Models. | |
Pavkovic et al. | A UML-based approach to forward engineering of SQLite database | |
EP4323863A1 (en) | Automated authoring of software solutions from a data model | |
Ristić et al. | Resolving Database Constraint Collisions Using IIS* Case Tool |
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 |