1. 程式人生 > 其它 >資料庫表遷移——達夢資料庫---》mysql

資料庫表遷移——達夢資料庫---》mysql

遷移過程

專案資料庫從達夢資料庫遷移到mysql,不遷移資料,只遷移表結構。當中通過除錯踩了不少坑,把遷移過程記錄一下。

一、 在達夢新建資料庫

利用達夢資料管理工具新建一個數據庫,執行專案sql檔案

二、 利用DM資料遷移工具遷移

用sqlyog連線mysql資料庫,新建資料庫tyqx-test。利用DM資料遷移工具,從DM遷移到mysql。其中表中的datetime型別遷移到mysql會預設對映為timestamp,把所有的timestamp型別資料改為datetime(6),預設值為CURRENT_TIMESTAMP(6),注意時間精度,如果只填datetime預設只精確到秒,涉及時間排序的時候精度會受到影響,6意味著小數點後六位。其中的longvarchar欄位會自動對映為longtext,改為text欄位。預設匯出後不帶欄位的註釋,需要自己新增上註釋。

三、 匯出sql

在連線工具中匯出建表sql語句。作為建表sql---create.sql。

修改專案原專案中的修改sql的語句。差異主要在於:

去除表名和列名的雙引號,然後所有涉及mysql關鍵字的列名,例如order、sql加上反引號。

四、 修改所有實體類關鍵詞欄位

修改實體類設計mysql關鍵字的欄位的@Tablefield,order、sql等,加上反引號。

五、 修改mapper.xml語句

專案中用到mybatis框架,檢查mapper.xml中涉及mysql關鍵字的欄位,例如order、sql、path,加上反引號。

去除msql不支援的tochar等函式。

去除所有insert語句列名的雙引號。

六、 時間檢索問題

“yyyy-MM-dd “模式的時間檢索(例如2021-12-01),達夢檢索小於”2021-12-01“時,不包括當天的資料,mysql檢索時包括當天資料。之前的處理是把endTime+1天在達夢中檢索,換到mysql會導致查詢出後一天的資料。在Mysql中把涉及到時間的查詢,加上”00:00:00”和”23:59:59”提高時間精度進行查詢,不需要將endTime加一天。如果不提高精度。Mysql檢索大於等於”2021-12-01”且小於等於”2021-12-01”無法檢索出當天的資料。