簡體   English   中英

將數據從一個數據庫移動到另一個具有不同數據結構的數據庫

[英]Move data from one database to other with different data structure

如何將數據從假設的mysql數據庫移動到postgres數據庫?

場景:兩個類似的應用程序。 用戶想要從一個應用程序切換到另一應用程序。 但是他在以前使用mysql數據庫的應用程序中保留了某些數據信息。當他切換應用程序時,必須將其數據從舊應用程序遷移到使用postgres的新應用程序。

這兩個數據庫都是不同的,具有不同的結構以及表和表之間的關系,表數以及它們下面的列。

但是如何將日期從一個數據庫移動到另一個數據庫?

有什么工具可以做到這一點嗎? 如果是這樣,任何人都可以建議這樣的工具。

可能不是您所需要的,但是此頁面包含一個

“可下載的Magic drupal-mysql2pgsql.pl腳本”

並討論了遷移數據的困難。

這可能是不合適的,因為它可能僅遷移Drupal數據庫(並且您沒有說明涉及哪些應用程序)

最好的選擇是以簡單的文本格式導出/備份MySQL數據,然后將其壓縮為PostgreSQL格式並導入。 這將需要一些腳本/編輯。

當然,這就是為什么您需要用於該工作的工具的原因。

我會這樣做:

(僅使用數據庫工具)

  • 在MySQL中創建一個新數據庫,並用空表填充它,其關系與我需要遷移到的關系完全相同(postgres)
  • 使用SELECT語句將數據從原始MySQL數據庫復制到新數據庫(因為新表是我想的舊表的混合),或者可能是一些存儲過程...
  • 然后使用轉儲工具,該工具將為我的新數據庫生成sql腳本以在其他地方創建。 對於MySQL,該工具是mysqldump ,它具有生成--compatible=postgres兼容腳本的選項:-- --compatible=postgres和許多其他非常有趣的選項。
  • 在我的新數據庫上運行這些腳本
  • 檢查不一致之處,糾正...

(使用定制的應用程序+ ORM(例如:C#,NHibernate)-實施時間更長):

  • 在我的新DBMS上創建我的新數據庫
  • 為原始數據庫創建OR映射
  • 為新數據庫創建OR映射
  • 使用我的ORM導入原始數據
  • 轉換我的數據以適合我的新數據庫並將其插入我的ORM

(使用已知工具):

抱歉,但是我不知道是否有工具可以做到這一點!

您要描述的問題是數據倉庫世界中最常見的問題之一,您需要從應用程序數據庫中獲取數據(通常是經典的關系數據模型),然后將其合並和集中在具有不同結構的數據倉庫中(大多數情況下是維數據模型)。 ETL作業(提取轉換負載)的作用。

您可以將它們作為SQL腳本,手動運行或自動運行。 您需要建立的轉換邏輯,然后將其實現為SQL腳本。

有專用的ETL工具,但我認為它們不會為您帶來太多價值。

我也建議使用ETL工具進行此類工作。 應用不同的功能將使您的遷移100%成功。 我建議對商業用戶使用開源工具,例如Apatar(apatar.com),對技術用戶使用Talend(talend.com)。

有用於這些方案的整個工具行業。 Google代表“ ETL”,可能還有您正在處理的數據庫供應商名稱,您可能會找到在合理的時間內無法評估的更多解決方案。

我建議與其他人一樣的路線,但略有不同。 使用ETL工具可以做到這一點。 大多數ETL工具都可以完成您剛剛描述的工作。 如果您不想花任何錢購買“ ETL”工具,那么我將投票支持Talend Open Source ETL工具。 我用過它,而且功能非常強大。 文檔和示例可在http://www.talend.com中獲得

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM