簡體   English   中英

如何完成數據庫遷移?

[英]How is Database Migration done?

我記得在上一份工作中,我需要進行數據遷移。 在那種情況下,我需要遷移到新系統,因為我要開發,所以它具有不同的表架構。 我認為第一,我應該知道:

  • 通常,如何將數據(具有相同的架構)遷移到其他數據庫引擎。 例如。 MySQL-> MSSQL。 就我而言,我的目標數據庫是MySQL,並且我使用了MySQL Migration Toolkit

  • 我在想,在企業應用程序中,可能有存儲過程,觸發器也需要導入。

  • 如果表架構不同,那我該怎么辦呢? 在我的上一份工作中,我所做的是將數據(以我的情況為例,是從Access中)導入到目標(MySQL)中,並保留了表結構。 然后使用SQL選擇數據並根據需要將其處理到最終目標表中。

  • 就我而言,我沒有舊數據庫的文檔,並且列的名稱不正確,例如。 它使用說“ field1”,“ field2”等。我需要從應用程序代碼中跟蹤列的含義。 還有更好的方法嗎? 還是有時,列在定界數據中包含多個值,讀取代碼是唯一的方法嗎?

執行數據庫遷移后,我使用了該應用程序而不是通用工具來遷移數據庫。 該應用程序連接到兩個數據庫,並將對象從一個數據庫復制到另一個數據庫。 您不必擔心模式或權限,因為應用程序中已處理了所有這些事情,就像您最初設置應用程序時會發生什么一樣。

當然,如果您的應用程序不支持此功能,則可能對您沒有幫助。 但是,如果您正在編寫應用程序,則強烈建議您這樣做。

我真的很依賴,但是根據您的問題,我假設您想聽聽其他人的所作所為。 這就是我當前項目的工作。

我必須從Oracle遷移到Oracle,但要遷移到完全不同的架構。 舊系統是2層(舊客戶端,舊數據庫),新系統是3層(新客戶端,業務邏輯,新數據庫)。 在新模式中,我們有600多個表。

經過深思熟慮,我們放棄了使用SQL從舊數據庫遷移到新數據庫的想法。 我們決定以我為例,我會更容易上手:

old database -> old client -> business logic -> new database

在舊數據庫中,許多數據以奇怪的方式存儲,而舊客戶端以復雜的方式處理它們。 我們可以訪問舊客戶端的源代碼,但這是一個非常大的系統。

我們編寫了一個遷移工具,該工具位於舊客戶端和業務邏輯之上。 之前我們有一些SQL,之后有一些SQL,但是大量數據是通過舊的客戶端和業務邏輯遷移的。

缺點是速度很慢,在我們的案例中,整個遷移過程需要花費190多個小時,但否則效果很好。

UPDATE

就存儲過程和觸發器而言:即使在新舊系統(都是Oracle)中使用相同的DBMS,過程和觸發器都是從頭開始為新系統編寫的。

我建議您在Wikipedia文章中獲得良好的概述,並鏈接到主要的商業工具(和一些非商業工具)。 如果存儲過程(以及類似的功能,例如用戶定義的功能)豐富,那么它們將成為遷移中的“熱點”,這需要罕見的昂貴的人工技能-一旦您擺脫了“聲明式”的情緒在主流SQL和程序代碼中,您不能指望自動化工具能做得不錯(圖靈定理說,在足夠普遍的情況下,它們實際上是做不到的;-)。 因此,您需要工程師對BOTH引擎的過程陷阱有充分的了解-您要從中移植的一種,也就是您要移植到的一種。 您可以買到-這是顧問賺取豐厚利潤的利基之一!-)

如果使用的是MS SQL Server,則可以使用SSMS一次性編寫架構所有數據的腳本SQL Server 2008:將數據編寫為插入腳本

如果您不使用任何/許多非標准的SQL構造,那么您可能無需花費太多精力即可手動編輯此scipt。

暫無
暫無

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

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