Migration

DBMS 載入多種類型的轉儲文件

  • November 1, 2018

我只是想知道是否有適用於 Linux 的 DBMS 可用於從各種其他 DBMS 恢復轉儲文件,例如 MySQL、PostgresSQL、SQL Server 等。

我的任務是從各種 DBMS 遷移數據,我想知道是否可以不使用 Wine 安裝 MSSQL,而只安裝一個 DB 來載入/恢復轉儲文件並查看其數據並可能繼續遷移?

  1. 不要使用 Wine執行 SQL Server!SQL Server 現在在 Linux 上執行 - 所以如果它不是生產實例,也許您可以使用開發人員版本(警告:IANAL - 檢查 Microsoft 的許可是否適合您的情況)
  2. 由於您使用的是 Linux,因此您可以使用 sed、awk 和 grep 等工具,這些工具對於此類操作非常強大。
  3. 那裡有任意數量的 RDBMS-X_2_RDBMS-Y 腳本。例如,從 mysql 遷移到 postgresql的快速Google給出了這個頁面,其中有大量的商業和開源工具。

最後,一個大大的警告。我執行此類任務的經驗告訴我,沒有任何工具是完美的(遠非如此!)。除了基本 SQL 數據類型(一些自定義和/或使用者定義)和語法(即使對於相對簡單的語句)的差異之外,您還會遇到無法解決的“翻譯” STORED PROCEDUREs、TRIGGERs 和FUNCTIONs 的問題,而您確實不在保留範圍內說到工具!

鑑於目前的技術狀態,不可能只通過腳本將來自一個伺服器的程式碼放在另一個伺服器上,然後將另一台伺服器的程式碼丟棄!有人試圖通過一個名為Persistent Stored Modules. 我相信,目前,供應商在他們自己的語言和方法上投入了太多,想要(或被迫)很快改變(想想養老金!:-))!

做到這一點的唯一方法是讓程序員(技能水平取決於遷移/翻譯的規模和難度)“手動”執行此操作 - 即建構可以處理​​ DDL 和 DML 的腳本。根據我的經驗,在這項工作中使用 sed 和/或 awk 並建構一個迷你腳本管道相對容易,例如:

sed -i 's/NUMBER/DECIMAL/g' my_dump_file.sql

並使其令人滿意。

為了執行STORED PROCEDUREs、TRIGGERs 和FUNCTIONs,您需要一個能勝任、經驗豐富的程序員,他對這兩個系統都相當了解。

引用自:https://dba.stackexchange.com/questions/207132