基礎數據所對應的類型不同 在Oracle中有一些基礎類型與Sqlserver中名字一樣,但是所存儲的數據格式不同,Date類型在Oracle中精確到秒,在Sqlserver中只能精確到分 表的結構 Oracle中所有的表都有一個共同的欄位,rowid這是在物理上存在的,記錄了每一條記錄的行位置,ro ...
基礎數據所對應的類型不同
在Oracle中有一些基礎類型與Sqlserver中名字一樣,但是所存儲的數據格式不同,Date類型在Oracle中精確到秒,在Sqlserver中只能精確到分
表的結構
Oracle中所有的表都有一個共同的欄位,rowid這是在物理上存在的,記錄了每一條記錄的行位置,rownum 是邏輯上的,根據排序方式的不同會出現不同的rownum,因為Oracle的這個特性,經常在進行一些crud操作的時候會通過rowid來進行,導致在轉資料庫的時候會遇到各種麻煩,所以我建議各位不管是使用哪一種資料庫最好是使用標準sql,並且不要太依賴某種資料庫的特性。我開始是想通過row_number()加with as 去代替rowid,但是總會出現一些奇怪的問題,你前一次查詢的id,重新進入資料庫操作的時候改變的是另外一條記錄,最後的解決方式我把每一張表都添加上了rowid
Oracle的to_date,to_char方法
在轉Oracle資料庫的時候這兩個方法出現了很多次,看他們的名字就知道是乾什麼的,Sqlserver中沒有這樣的方法,但是有conver,cast方法這兩個方法可以實現Oacle兩個方法的所有功能
Oracle的NVL方法可以用isnull代替
在Oracle中子查詢語句可以有order by,而在sqlserver需要添加top()函數
Oracle比sqlserver的優勢
我個人覺得oracle的優勢在他的圖形用戶界面,雖然長相不好,但卻實用,如果有失誤的操作還能夠rollback,導出數據時也很方便,在把oracle數據遷移到sqlserver時只要關註兩個資料庫之間數據類型的差異,不用擔心oracle的數據問題,可以一鍵查詢提出成文件,而sqlserver操作起來反而複雜,我還沒有找到導出sqlserver sql文件的方法。
資料庫轉換需要註意的幾個點:
1:基礎數據之間的差異,在不同的數據中相同名字的數據類型可能存的值存在某些差異,我也沒有弄清有哪些類型,但是這是一個需要註意的點
2: 某些資料庫獨有特性在轉換時要面向整體去設計
3:不同資料庫所用sql也有不同,但總能找到替代的方法,一定要用心