資料庫db2到oracle遷移解決方案

2021-08-30 04:41:45 字數 2493 閱讀 7041

描述:

db2語法為fetch first n rows only,oracle取前n條資料的語法為在where條件中增加rownum<=n;

舉例:

1--按照f_id降序取表tab_example_info中前十條資料

2--db2

3select * from tab_example_info order by f_id desc fetch first 10 rows only

4--oracle

5select * from (select * from tab_example_info order by f_id desc) where rownum<=10

描述:

oracle含有rowid ,由資料庫唯一產生的,可以在程式裡可以獲得;db2不能被程式獲得。

oracle中含有rowid和rownum,其中rownum是獲取查詢結果集後再加上去的,rowid是資料庫資料產生的時候生產的結果。

舉例:

1--oracle rownum和rowid

2--1.rownum只能用< 或者<=

3--2.rownum《或者<=今年放在子查詢裡面

4--錯誤用法

5select rownum,f_name from tab_example_info where rownum>5 and rownum<10;

6--正確用法

7select * from (select rownum,f_name from tab_example_info) where rownum<10;

8--rowid用法

9select rowid,phone_no from tab_example_info where rowid>5 and rowid<10;

描述:

當select語句選出的字段為null時,可以使用函式轉換成預設值,oracle中的函式為nvl,db2中的使用的函式為value。

舉例:

1--db2

2select f_id,f_name,value(f_rate,'0') from eg.tab_example_info;

3--oracle

4select f_id,f_name,nvl(f_rate,'0') from tab_example_info;

描述:

oracle認為f_name=』』為false,當where f_name=』』出現時,select、update、delete無法匹配到結果集。

舉例:

1--%s為字串佔位符,%s有可能是空串,查詢條件f_name='%s'

2--db2

3select f_id from tab_example_info where f_name='%s';

4--oracle

5select f_id from tab_example_info where (f_name=』%s』 or (f_name is null and 『%s』 is null));

描述:

oracle中[where 字元型字段 in (整形) ]是允許,但db2不允許;oracle[where 字元型字段=數字型字段]允許,但db2不允許

舉例:

1--oracle可通過,db2中報錯

2select 'abc' from tab_example_info where '1' in (1) 

3--oracle可通過,db2中報錯

4select 'abc' from tab_example_info where '1'=1

描述:

oracle和db2資料型別轉換特殊寫法與相容寫法。

1--oracle:

2--整型轉字元型,字串轉整型

3to_char(1),to_char(1.1),to_number('1'),to_number('1.1')

4to_data('2018-10-27 19:17:30','yyyy-mm-dd hh24:mi:ss')

5to_char(to_date('2018-10-27','yyyy-mm-dd'),'yyyy-mm-dd')

6--db2

7char(1),int('1'),double('1.1'),char(1.1)date('2018-10-27')

8to_date('2018-10-27 19:17:30','yyyy-mm-dd hh24:mi:ss')

9char(date('2018-10-27'))

10--相容寫法

11cast  (1 as char)

12cast  ('1' as int)

描述:

oracle sysdate

current date

日期:oracle中date型也是帶有時分秒的,db2下date只是年月日,如'2018-10-27',且可作為字串直接操作。db2中要記錄時分秒必須採用timestamp型。

Db2資料遷移

db2資料遷移的方法大致有以下幾種 通過db2資料庫的備份和復原進行資料遷移 注意點 進行復原的時候要通過手動選擇備份,復原檔案時間設定要和備份的檔案上的時間戳一致 不能進行跨平台的遷移,如 從linux平台資料庫備份的檔案,不能復原到windows平台資料庫中 通過export to和import...

db2跨平台資料庫遷移

現在我們要把這個資料庫遷移到不同的作業系統 比如從aix到linux 我們應該怎麼辦呢?因為作業系統不同,所以使用backup restore命令顯然是不行了。那麼是不是可以使用db2move命令呢?也不行,首先db2move命令沒有辦法遷移索引 外來鍵約束 觸發器,更不能遷移含自增欄位資料的表。那...

db2資料遷移del,ixf

db2資料遷移del,ixf 在用db2 import from test.del of del insert into table匯入資料的時候,報錯說有幾條資料匯入失敗,但是匯出的資料條數和匯入的資料條數都與資料庫中的資料條數是相等的,很奇怪,後來發現del檔案是按行來儲存資料的,因為在資料庫的...