Sql-Server

如何驗證兩個 MS SQL 和 MySQL 之間的數據轉儲

  • September 20, 2014

我正在嘗試使用 MD5 雜湊驗證從 MSSQL 導出並導入 MySQL 的數據是 100% 準確的。在 Linux 上,我在 Windows 上使用 md5sum 和 WinMD5。編碼相同:UTF8。我嘗試了 UNICODE 和 ANSI,但結果是一樣的。

當我直覺地比較導出文件中的數據或單個單元格值的雜湊值時,它是 100% 準確的。但是,比較這兩個文件會產生不同的雜湊值。任何人都知道為什麼雜湊會不同?

非常感謝您的意見。

更新:數據使用 BCP 從 MSSQL 導出到文本 (.txt) 文件中。MySQL 數據使用以下命令導出:SELECT * INTO OUTFILE…. 到文本文件中。兩者都使用 “%^&” 作為欄位分隔符,"!@#$" 作為行分隔符,並使用 “" 進行轉義。

文件雜湊不同的原因可能有多種:

  • 行尾不同;
  • 間距可能不同(製表符與空格);
  • 相同數據的不同佈局
  • 編碼(保存數據的文件)
  • 報價(單對雙)
  • 區分大小寫

我要做的是將兩個文件與diff工具進行比較。git diff可以在這裡提供幫助,因為它具有逐字區分的能力,如果您通過它--no-index選項,甚至不必將它們放在 git 儲存庫中。這個命令可以幫助

$ git diff --no-index --color-words file1.txt file2.txt

使用類似comp命令來找出它們不同的第一個地方。

然後在十六進制編輯器中打開文件,比如Windows 的HxD,看看它們的不同之處。特別是,尋找:

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