數據庫升級腳本製作

最近由於公司走了一個負責數據庫方面的人,一些有關數據庫的任務沒人做了,leader就找到了我。這次的任務是負責新版本的數據庫升級腳本,難點是我對數據表結構不是很熟悉,而且新版本的功能也不是有我來負責的,還有就是數據表結構變化比較大,要保證用戶原本數據不能丟失。200多張表裏面還是有數據的,如果人工做的話不死人才怪。於是查找工具,先從自己熟悉的powerdesigner開始,先用反向工程分別生成新老兩個數據庫的模型,然後點擊 菜單中database->modify database,再按照步驟做,沒啥難度。完工後生成了一個很長很長的sql, 由於是機器生成,看起來超麻煩,所以一狠心,直接拿了備份升級下試試看。執行好後,報出一堆錯,看看錶是改了,但數據都丟失了,也不確定是不是所以的表都升級了。唉,這對於表變化比較大或原有數據比較多的情況根本行不通。

注意圖中的 Use alter statements when possible選項,說的太模棱兩可。我試了下,大多數只要表變化一複雜,他就開始偷懶不用alter來搞表,直接create然後把原表的數據導入。先不說效率,萬一丟失了數據可不好。

如果你的表和數據都變化比較少,那PD也算個好方法,畢竟方便,高效。如果不是,下面介紹個好工具SQL Delta,這個用來對比數據庫的確好用。

進入系統,設置好要升級後的數據庫和升級前的數據庫,然後點compare databases來比較表結構

大家可以發現字段變化看的很清楚,有多的有少的,也有改變類型的。一般建議升級時多餘的字段不要刪除,只增加和修改。

大家可以在右邊看到工具建議的升級腳本,由於是一個表一個表查看,這樣雖然工作量大了,但比較放心,而且腳本可讀性較好。

這裏也要注意對於表變化比較大的情況,這工具還是採用以下方法(先建立臨時表,導入原表數據,然後刪除原表,臨時表更名成原表的名字)

接下來比較表內的數據,按菜單欄中的data 然後點擊wizard

選中所要比較數據的表,一般是些配置用表,用戶的數據不要丟失就行。

大家可以觀察A,B來知道數據的變化,想在升級腳本中體現的話,就選中不想生效的就去掉勾。最後點擊Sync進入後save一把,腳本就生成出來了。這個數據庫升級的DDL和DML都有了,主要生成好還是要多測試下,畢竟升級有風險,升級前請做好充足的備份。

發佈了232 篇原創文章 · 獲贊 8 · 訪問量 110萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章