[发明专利]一种自动生成从关系型数据库向MongoDB数据库数据迁移的代码的方法有效
申请号: | 201610454184.8 | 申请日: | 2016-06-21 |
公开(公告)号: | CN106095991B | 公开(公告)日: | 2019-07-09 |
发明(设计)人: | 曹陈宸;马晓星;曹春 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F16/21 | 分类号: | G06F16/21 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 张苏沛 |
地址: | 210046 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种自动生成从关系型数据库向MongoDB数据库数据迁移的代码的方法,它包括以下步骤:步骤一、从配置文件中读取运行参数,并从关系型数据库中读取元数据;步骤二、根据元数据生成模型;步骤三、根据需求定制模型;步骤四、根据模型和模板生成代码。本发明的目的是辅助程序员进行从关系型数据库向MongoDB数据库迁移,主要是数据上的迁移。相比于自写脚本,本发明更具有一般性,相比于提取转化转载(ETL)工具,本发明在数据迁移之外也有部分代码迁移的辅助。 | ||
搜索关键词: | 一种 自动 生成 关系 数据库 mongodb 数据 迁移 代码 方法 | ||
【主权项】:
1.一种自动生成从关系型数据库向MongoDB数据库数据迁移的代码的方法,其特征在于,包括以下步骤:步骤一、从配置文件中读取运行参数,并从关系型数据库中读取元数据;所述步骤一的具体步骤包括:步骤1.1 从配置文件中读取参数,配置文件由用户定义,需要定义的内容包括:生成代码、关系型数据库和MongoDB的相关参数;步骤1.2 从关系型数据库中读取所有表(table)的表名,根据表名读取每张表的元数据; 读入的元数据包括表的索引(index)信息、表的外键(foreign key)信息以及表中每一列(column)的列名; 根据列名读取列的元数据,包含列名,列的类型,小数点精度;步骤二、根据元数据生成模型;所述步骤二中根据元数据生成模型的具体步骤包括:步骤2.1 根据元数据生成模型,模型由上一步所获取的元数据生成,模型的类型为表(list);步骤2.2 对Table类中的表名命名转换,遍历每张表(table)中的列,对Column类中的列名命名转换进行获得在代码中使用的表名和列名,命名转换的方法如下:将原名转换为小写,将首字母大写,将下划线去掉,并将下划线后第一个字母大写;步骤2.3 遍历每张表(table)中的列,对Column类中的数据类型进行变换,变换方法如下:如果类型为TINYINT、SMALLINT时使用类型short;如果类型为INTEGER时使用类型int;如果类型为BIGINT时使用类型BigInteger;如果类型为REAL、FLOAT时使用类型float;如果类型为DOUBLE时使用类型double;如果类型为DECIMAL、NUMERIC时,若小数点精度为0,使用类型BigInteger,否则使用类型BigDecimal;如果类型为BIT、BOOLEAN时使用类型boolean;如果类型为CHAR、VARCHAR、LONGVARCHAR时使用类型String;如果类型为BINARY、VARBINARY、LONGVARBINARY时使用类型byte[];如果类型为DATE时使用类型Date;如果类型为TIME时使用类型Time;如果类型为TIMESTAMP时使用类型Timestamp;否则使用类型Object;步骤三、根据需求定制模型;所述步骤三中根据需求定制模型的具体步骤包括:步骤3.1 确认表名是否需要另外起名,如果需要,指出并修改表名,表名不能重复;步骤3.2 确认处理连接表的方式为内嵌还是引用,默认方式为引用,如果采用内嵌的方式处理连接表,只嵌套一层;步骤3.3 确认是否有额外的表需要连接,默认需要连接的表是有外键关系的表;如果需要,指出连接表和被连接表的表名和列名;步骤3.4 确认每张表的列名是否需要另外起名,如果需要,指出表名和列名,并修改列名,列名不能重复;步骤3.5 确认每张表是否有需要额外生成的方法,默认为每个单字段(列)正序生成一个方法;如果需要,指出方法名,方法名不能重复,哪些字段名,排序方式;如果需要更复杂的方法,给出实现方式;步骤四、根据模型和模板生成代码;所述步骤四中根据模型和模板生成代码的具体步骤包括:步骤4.1 根据模型和模板生成代码,首先是配置文件的生成,包括工程的配置文件、存放MongoDB配置的文件;步骤4.2 遍历模型中的每张表(table),生成表对应的实体(entity)以及获取数据方法的库(Repository);步骤4.3 生成运行文件:遍历模型中的每张表(table),生成插入表的代码,生成插入索引的代码,生成插入表中引用的代码;根据模型和模板生成代码,模板为预定义的关键字空缺的代码片段,根据需求不同预定义不同的模板,生成过程为先根据需求选择模板;根据模型补全模板;将补全后的模板组合生成代码;采用使用引用方式处理连接表、并且使用Spring Data框架的模板;组合模型和模板使用工具freemarker,所述freemarker是一种基于模板和要改变的数据来生成输出文本的通用工具。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610454184.8/,转载请声明来源钻瓜专利网。
- 上一篇:斜坡式客运码头结构
- 下一篇:一种可控投切的多档位输出智能变压器装置