有很多情形是版本會依不同的開發環境不同而資料庫也有所不同,例如:
- Dev. App sever --> Dev. DB server
- UAT App server --> UAT DB server
App 前後版本的異同有很多開發工具可用而能看出差異,但對於要觀察或審視因此而調整的差異資料,要如何比對出來呢?
這個問題對於精熟資料庫及工具的 DBA 來說,也許不是什麼大問題;要模擬前後不同的(資料庫中)測試案例或設定資料,無論是觀察或資料補遺,免不了要進行資料兩相比對,這種情形可能來說,但對於應用程開發人員來說會是不小的困擾。
以個人而言,以 Unix 為作業平台使然,會第一時間聯想到很多 command 來操作文字型態的資料差異,例如:diff。再者,很多資料庫相關的工具有很多匯出的功能,例如 SQL Developer 能匯出 .csv 檔案。如此來說,可以用 diff 指令比對不同時點或不同資料庫同一 Table 資料的匯出檔,即可分辨其差異。
但,個人也遇過有些開發或資料管理人員喜歡使用 Excel 來進行資料統整;若遇上要用此來做為資料比對的對像,又要如何呢?
直觀上,就是使用 Excel 來轉存 .csv 檔案即可。
但幾種情形可能不見得適用:
- 沒有 license 供安裝 Excel
- 要大量、批次比對 (這裡指的對像是 Tables)
- 非 Unix / Linux 平台使用者 (意指 command line 型式)
使用 OpenOffice/LibreOffice 時可借助 unoconv (python code) 來做,可省去很多寫 script 的時間。做法:
- 安裝 OpenOffice/LibreOffice (通常 python 是預裝好的,若否也要安裝)
- 設定 PATH,確定能執行到 python、OpenOffice/LibreOffice、unoconv
- 分別匯出欲比對的兩個 .xlsl 檔案成 .csv 檔案
unoconv -f csv myTableVer1.xlsx unoconv -f csv myTableVer2.xlsx
- 儲存比對的結果
diff myTableVer1.csv myTableVer2.csv > myTable.diff cat myTable.diff | colordiff | less -R