2013-04-01 125 views
0

我們正在將我們的數據庫從MySQL遷移到PostgreSQL,並且我們現有應用程序中的大部分SQL都需要重寫。有什麼工具可以將MySQL SQL轉換爲PostgreSQL SQL?

我想知道是否有任何工具可以將MySQL SQL轉換爲PostgreSQL SQL,以便我們可以避免手動重寫這些SQL。

+1

大多數SQL約束都是相同的。即便如此,您仍然需要驗證結果是否相同,並且可能需要修復錯誤。只需使用你的大腦,而不是浪費時間與自動化工具,可能無法正常工作。 – siride

+0

您可以導出與PostgreSQL兼容的MySQL數據庫(通過phpMyAdmin)(當然還有很多編輯)。或使用[Kettle](http://kettle.pentaho.com/) –

回答

1

SQL非常複雜,以至於「理解」SQL語句並在另一種方言中生成兼容的等價物的通用工具是不切實際的。特別是因爲大多數SQL對數據的隱含假設並未在任何地方實際執行,所以SQL語句可能對一個數據集執行一件事,但對另一個數據集執行某種不同(且意外)的操作。你將如何編寫一個工具來轉換使用會話變量的MySQL查詢?或使用可寫公用表表達式的PostgreSQL查詢?你無法自動化。

您可能能夠找到工具來自動執行簡單的語法和方言更改以及常見的一對一功能替換,但就是這樣。除非你有大量簡單,非常相似的SQL語句,否則這些工具不是很多用處。如果你有很多非常相似的,可能是最初的機器生成的語句,你可能想要考慮你的應用程序設計,因爲這不是一個好方法。

通常情況下,您最好是手動修復SQL,可能會經過一些簡單的數據類型替換。

如果您首先修正SQL在ANSI和STRICT模式下運行的MySQL上的正確工作,那麼它會幫助您很大,因此您可以捕獲一些非常愚蠢的MySQL-isms,您可以將代碼更改爲ANSI引用MySQL的引用規則等。

相關問題