需求
- 表名的變更
- 列名的變更
- 列類型的變更
- 列值的變更及變更規則
普通遷移步驟
1,創建一個臨時表
2,把裏面的數據全部移動到對應的臨時表中
3,刪除舊錶
4,新建新表
5,把臨時表的數據根據定義好的變換規則把數據一個個導入到新的表中就好了。
防中斷遷移步驟
1,創建新表對應的臨時表(因爲新表對應的舊錶表名可能會變,所以統一新建一個新的臨時表)
2,根據字段變更規則一個個把舊錶數據移植到新表的臨時表中。
3,等數據全部移植完畢後,修改舊錶名字+ _await_delete(後綴)。
4,把新表臨時表的名字改爲新表的名字。
5,確認交互及所有數據都無誤後。(人工或自動校驗)
6,把舊錶及裏面數據都刪掉。
6.1,如果有誤,則把新表刪掉,舊錶名字改回來。
難點及坑
- 如何防中斷?
- 把刪除舊錶放在最後
- 如何給出進度?
- 獲取總共的數據條數
- 每插入N條返回一個百分比數值
(具體例子後續補充2020.5.26)