2008-12-19 25 views
0

我在上一個項目,需要從MySQL的反覆導入數據* .dmp文件到現有的SQL Server數據庫方之一。我正在尋找以現有工具,框架的形式提供的指導,或者,除非預先存在的解決方案以及如何進行的建議。轉換一個MySQL .DMP文件.sql文件的MS SQL Server 2005的

我的第一個想法是以文本形式讀取dmp文件,並對其執行某種查找/替換操作,以將MySQL約定轉換爲SQl服務器,但這聽起來很混亂,困難並且容易出錯,因爲意外的項目悄然進入源代碼文件。

此外,這些dmp文件是累積的。我在哪裏可以找到用於在數據和模式中計算表增量的資源?

在此先感謝。

回答

1

我的用於從一個數據庫引擎轉換數據庫結構到另一個優選的方法涉及產生用於目的的簡單的應用程序,尤其是如果它必須是動態的(結構隨時間變化)和重複。你的情況可行嗎?

具體地說,編寫應用程序/腳本行走源數據庫的(在這種情況下的MySQL)的結構和生成該目標數據庫的等效DDL(在這種情況下的SQL Server)。然後DDL可以保存爲稍後執行的腳本,或者如果可以同時連接到兩個數據庫,則可以實時執行。

多年來,我爲各種情況做了很多次。它基本上是一般情況下代碼生成的練習,所以它可以從使用模板引擎(StringTemplate)中受益。

我發現這個有用的,我是在數據庫升級(甲骨文6〜7),以及開關產品(如訪問SQL Server)的情況。

您也可以考慮針對ANSI SQL代替,這會爲大多數數據庫工作,除非你正在使用自定義的數據庫功能(應保持在最低限度)。

祝福。

編輯:我不建議嘗試通過某種形式的文本解析和重寫的改造實際腳本文件。我發現它很容易出錯,非常困難,耗時,並且最終因某些必要的轉換而失敗。如上所述,讓數據庫引擎爲您工作。

+0

在這一點上,幾乎所有的東西是可行的。感謝您閱讀ANSI SQL的提示。只是要清楚你是建議一個應用程序的源數據集(或其他結構),然後像任何其他應用程序推到目的地? – 2008-12-20 14:06:06

+0

如果您使用的是ADO.NET,那麼您確實可以將數據源作爲DataSet引入並且走結構。但是你的輸出不會是數據集,因爲只有當結構已經存在於目標中時才能使用。相反,創建DDL以在目標中構建該結構。 – 2008-12-20 23:47:33