最近,在進行乙個專案的遷移工作,資料庫原來採用的mysql,現在想改為國產資料庫達夢(dm)。說起mysql,很多人都不陌生,作為乙個開源的關係型資料庫,mysql有著極為廣泛的使用群體,而且,很多以前的中小型專案都是使用免費的mysql資料庫。但是,對國產資料庫dm,了解的人遠沒有mysql那麼廣泛,並且社群和論壇較少,在網上查到的可參考資料也寥寥無幾,不過,值得慶幸的是,dm在很多功能上都與oracle資料庫比較相近,並且採用sql92標準。
首先,說一下關鍵字問題。
dm的關鍵字真多,這是我第一次接觸dm時的真實感受。在一些sql語句中,如果使用了某些關鍵字,那麼對不起,直接報錯。在建表時最好要使用非關鍵字,當然,大部分關鍵字可以作為列名,但是在執行一些增刪改查的sql時(尤其是update時),會出現很多問題。具體的關鍵字有很多,像stat、begin、last、date、value、timestamp等,這些字作為列出現時,sql執行會出現一些問題。畢竟是遷移原有專案,原來把這些關鍵字作為表的列名的,應該做適當的修改,如加下劃線。
其次,說一下函式問題。
在mysql中的很多加密函式,在dm中不存在,或者是無法找到替代函式,比如sha1();還有就是一些跟ip的轉換相關的函式也沒有找到,比如mysql的inet6_ntoa()和inet6_aton();一些日期函式無法使用,如,mysql的utc_timestamp();一些進製轉換函式也無法使用,如:mysql的hex()和unhex(),不過,在dm中,可以用rawtohex()和hextoraw()代替,同時,這兩個函式也是oracle的進製轉換函式。
最後,說一下對mysql的擴充套件用法的修改。
在mysql中,你使用group by進行分組查詢很自由,在select部分,你可以選擇除了group by 和聚合函式以外的任何存在的字段,執行時不會報錯,但是這樣的sql語句不是標準的sql語句,而是mysql對標準sql的一種拓展,在oracle和dm中,在select部分,你只能可以選擇group by 和聚合函式作為查詢列,否則會報錯。那麼這樣的sql語句怎麼改造,我沒找到好的方法,目前,採用聚合函式把非分組字段進行聚合。
mysql的插入語句也很「自由」,不僅可以採用insert into,還可以採用replace into、insert ignore into、 insert into...on duplicate key update,但後面所列這些語句 都不是標準sql,dm都不支援,oracle貌似也不支援,替換方式是用merge重新組織sql。
一點小心得,有不當地方,請大家指正。
on
duplicate
key
update
MySQL遷移到達夢資料庫DM過程問題記錄
使用達夢自帶的資料遷移工具 dts 將mysql資料庫遷移至達夢資料庫 以下簡稱dm 遷移過程報如下錯誤 任務失敗 建立表 bpdb hook t 物件 update time default約束表示式無效 相關sql語句 create table bpdb hook t id bigint ide...
MSSQL資料庫遷移到Oracle
最近要把乙個mssql資料庫遷移到oracle上面,打算借助powerdesigner這個軟體來實現 今天簡單研究一下這個軟體的運用 把一步簡單的操作步驟記錄下來 1 首先我們開啟powerdesigner,並新建乙個physical data model 2 工具欄裡的 資料庫 configure...
mysql庫遷移 mysql資料庫遷移
由於yum安裝mysql的時候,資料庫的data目錄預設是在 var lib下,出於資料安全性的考慮需要把它挪到 data分割槽。步驟如下 一 關閉apache和mysql.複製 如下 二 將 var lib下的mysql目錄mv 移動 到data目錄。為什麼要用mv命令,而不用cp命令呢?應為li...