2017-08-17 525 views
2

我在Spring 4 MVC + Hibernate中使用MongoDB创建了我的项目。现在,我必须用MySQL将它转换成Hibernate。我的问题是我有太多的MongoDB集合bson和json的格式。我怎样才能将该文件转换为MySQL表格格式?那可能吗?将mongoDB集合转换为mySQL数据库

回答

2

MongoDB集合中的文档代表项目中某些类(POJO,域对象等)的序列化表单。据推测,您从MongoDB中读取这些数据将其反序列化为其类的形式并将其用于您的项目中,例如将其显示给最终用户,在计算中使用它,从中生成报告等。

现在,您希望在MySQL中托管该数据,因此您想知道如何将数据从MongoDB迁移到MySQL,但是因为持久格式完全不同,所以你想知道如何做到这一点。

这里有两种选择:

  • 使用你的应用程序代码来读取从MongoDB中的数据,deserialise到你的类,然后使用JDBC或ORM映射层等数据写入到MySQL
  • 使用mongoexport从MongoDB中导出数据(采用JSON格式),然后编写某种适配器,该适配器能够将此数据映射为您的MySQL数据模型所需的格式。

这些方法之间的非函数(特别是读写方面)将有所不同,但从根本上说,两种方法都非常相似;他们都(1)从MongoDB中读取; (2)将文档数据映射到关系模型; (3)将映射的数据写入MySQL。这个流程最棘手的方面是没有。 2,因为只有你了解你的数据和你的关系模型,没有工具可以神奇地为你做这件事。第三方工具如何充分了解您的文档模型和关系模型以便能够为您执行此转换?

您可以调查MongoDB JDBC驱动程序或使用类似Apache Drill的方法来帮助您在Mongo数据库上进行JDBC查询。因为这些可能会返回java.sql.ResultSet您将会处理更适合写入MySQL的结果格式,但它可能仍然不符合您的目标关系模型,因此您仍然需要某种形式的转换代码。

+0

谢谢,所以我必须为此编写代码。对?我正在寻找任何可以转换它的应用程序或任何工具。因为如果我必须编写任何代码,那么我必须声明所有的东西,比如数据类型,主键和所有东西。 – Harsh

+0

我已经更新了答案,以解决第三方工具能够为您执行转换的可能性。 – glytching

2

Mongodb是一个非关系数据库,而MySQL是关系数据库。关键区别在于非关系数据库包含可以包含层次结构的文档(JSON对象),关系数据库期望对象被规范化并分解为表格。因此,不可能简单地将MongoDB中的bson数据转换为MySQL将理解的内容。您将需要编写一些代码来读取MongoDB中的数据并将其写入MySQL。

+0

你能告诉我在哪个平台上?因为两个数据库都不一样。 – Harsh