2017-08-17 526 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