Mongo数据库转换MySQL数据库的方法、装置、设备和存储介质与流程

文档序号:37729077发布日期:2024-04-23 12:12阅读:9来源:国知局
本发明涉及数据转换,主要是涉及一种将mongo数据库数据转换为mysql数据库数据的自动转换方法、装置、设备和存储介质。
背景技术
::1、在一些业务场景中为了使用动态数据库的创建、动态增加字段等特性,我们会使用mongo数据库来存储业务数据。在这种情况下mongo数据库简化了我们的数据库和字段的创建逻辑使得业务数据更加具有弹性。可是我们在利用mongo数据库动态化优点的同时,当我们在进行数据集成查询的时候也带来了相应的问题和障碍。主要体现在以下几个方面:1、mongo数据库使用自己的查询语法而不支持传统的sql语句查询;2、mongo数据库字段数量和类型的不确定性;3、mongo数据库不能和其他关系型数据库进行很好的联合查询;4、mongo数据库不被一些传统的数据库集成系统的支持。2、在这些数据集成业务场景中,我们需要将已经产生的mongo数据库数据转换为传统的关系型数据库mysql数据。使得业务数据可以受到数据集成平台软件的支持,完成业务数据的跨系统集成和跨系统查询等工作。要将mongo数据库数据转换为mysql数据库数据,目前现有普遍采用的方法是先将mongo数据库导出为csv或者excel数据,再将csv或excel数据导入到mysql数据库当中去。这种方法主要有以下几个缺点:1、需要全程手动操作过程复杂;2、在新的数据产生后需要再次操作,多次操作之间的数据连续性无法保障;3、需要人工根据mongo数据建立mysql数据库的表和字段结构,在mongo数据产生新的数据字段以及数据长度变化时,无法自动适配和兼容。3、因此,有必要发明一种可以自动连续将mongo数据库数据转换为mysql数据库数据的方法,同时根据mongo数据库的字段变化调整mysql数据库结构的自动适配和转换的方法,提高数据集成的统一性、及时性、连续性和一致性。技术实现思路1、本发明的目的是提供一种mongo数据库转换mysql数据库的方法、装置、设备和存储介质,以实现mongo数据库数据自动、持续的集成转换为mysql数据库数据;所要解决的是使用传统方式转换mongo数据库数据会因为需要人工导入导出csv数据等操作而导致效率低下、数据重复导出,且容易因为字段结构动态变化出现兼容性的问题。2、为了解决上述技术问题,本发明采用如下技术方案:3、本发明的目的之一是提供一种mongo数据库转换为mysql数据库的方法,包括:具体步骤如下:4、(1)源数据获取5、从源mongo数据库获取一批mongo数据,mongo数据使用标记列进行排序,获取上一次记录的标记之后的数据,即标记列大于上一次记录的标记值,如果第一次转换还没有记录的标记,则直接获取排序之后的一批数据;6、(2)数据结构提取7、循环步骤(1)获取的所有的数据,记录所有出现的数据项(key)、数据类型和数据长度;获取目标mysql数据库,同名目标数据表的数据结构(table_schema),如果首次转换则还没有目标数据结构;8、(3)数据结构动态纠正9、①将步骤(2)获取到的最终mongo数据结构转换为mysql数据结构;10、②将步骤(3)-①转换之后的数据结构和步骤(2)获取的mysql数据结构进行对比;11、③根据步骤(3)-②的数据类型纠正记录,动态进行mysql数据表更新动作;12、(4)数据内容转存13、将步骤(1)中获取的一批数据,全部存储到已经通过步骤(3)纠正之后的mysql数据表中;14、(5)数据标记记录15、记录步骤(1)中获取的一批数据中最后一条数据记录的标记列的值,即记录的标记,定期重复步骤(1)-(4),以达到及时完成所有数据的同步的目标。16、具体的,步骤(1)中,所述标记列为_id或者时间。17、具体的,步骤(2)中,所述数据长度在循环过程中通过比较取最长值,所述数据类型如果业务数据确定为数值类型则保持数值类型,如果业务不能确保数值类型则使用字符类型,同一个所述数据项只保留通过比较之后的最终一次记录。18、具体的,步骤(3)-①中,获取到的最终mongo数据结构转换为mysql数据结构的具体步骤为:19、s1将_id(objectid)类型转换为_id(varchar)类型,并对应为主键;20、s2将string类型转换为varchar(n)类型,n取比较之后的最大长度,如果n>1000则将其转换为text类型;21、s3将number转换为int(n)类型,如果n>11则将其转换为bigint类型;如果具有小数则将其转换为decimal(n)类型,n为最大小数位数;22、s4将object类型数据进行序列化为json字符转换为string类型,并执行s2的转换动作。23、具体的,步骤(3)-②中,对比的具体步骤为:24、s1如果首次转换步骤(2)没有获取到数据结构,则结构以(3)-①为准,动态进行mysql数据表创建动作;25、s2对于同一个key,如果在(3)-①中是varchar(n)类型,通过和步骤(2)中的相同key的类型varchar(m)进行比较,如果n>m,则将数据类型纠正为varchar(n)类型;26、s3对于同一个key,如果在(3)-①中是text类型,则直接将数据类型纠正为varchar(n)类型;27、s4对于同一个key,如果在(3)-①中是int(n)类型,通过和步骤(2)中的相同key的类型int(m)进行比较,如果n>m,则将数据类型纠正为int(n)类型;28、s5对于同一个key,如果在(3)-①中是decimal(n)类型,通过和步骤(2)中的相同key的类型decimal(m)进行比较,如果n>m,则将数据类型纠正为decimal(n)类型;29、s6对于同一个key,如果在(3)-①中是bigint类型,则直接将数据类型纠正为bigint类型。30、本发明的目的之二是提供一种mongo数据库转换为mysql数据库的装置,包括:31、源数据获取模块,用于从源mongo数据库获取一批mongo数据;32、数据结构提取模块,用于对源数据获取模块获取的mongo数据进行记录提取得到待转换mongo数据结构;33、数据结构动态纠正模块,用于mongo数据结构转换为mysql数据结构,并进行据类型动态纠正;34、数据内容转存模块,用于将数据结构动态纠正模块纠正之后的数据存储在mysql数据表中;35、数据标记记录模块,用于记录源数据获取模块获取的一批数据中最后一条数据记录的标记列的值,便于数据转换时达到及时完成所有数据同步的目标。36、本发明的目的之三是提供一种mongo数据库转换mysql数据库的终端设备,包括:37、存储器;38、与所述存储器耦接的一个或多个处理器,39、存储在存储器中并被配置为由一个或多个处理器执行的一个或多个应用程序;40、其中,一个或多个应用程序配置用于执行上述mongo数据库转换为mysql数据库的方法。41、本发明的目的之四是提供一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,程序代码可被处理器调用执行上述mongo数据库转换为mysql数据库的方法。42、本发明的有益技术效果:43、本发明的mongo数据库转换mysql数据库的方法、装置、设备和存储介质通过自动识别、自动调整mysql数据结构的算法,将需要转换为mysql的mongo数据自动、持续、准确的进行转换。同时避免人工导入导出,提高了转换效率,避免数据结构不兼容和人工频繁调整数据结构的工作,有助于提高数据集成的兼容性和及时性。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1