任重道遠(yuǎn)遷移路之DB2到Oracle
1、在db2數(shù)據(jù)庫(kù)中存在表tbtest,有下列類型字段
列名 | db2 | oracle |
c1 | char(10) | char(10) |
c2 | varchar(10) | varchar2(10) |
c3 | integer | number(10) |
c4 | date | date |
c5 | timestamp | timestamp |
c6 | decimal(24,2) | number(24,2) |
c7 | decimal(12,7) | number(12,7) |
2、創(chuàng)建從db2中導(dǎo)出數(shù)據(jù)
- export tbtest.del of del messages tbtest.msg select * from tbtest;
注:在tbtest.msg文件中有警告信息,一般是一條記錄變成了多行,需要手工改改。
3、創(chuàng)建oracle數(shù)據(jù)導(dǎo)入控制文件tbtest.ctl,內(nèi)容如下:
- load data
- infile ‘tbtest.del’
- truncate
- into table tbtest
- fields terminated by ‘,’ optionally enclosed by ‘”‘
- trailing nullcols
- (
- c1,
- c2,
- c3,
- c4 date ‘yyyymmdd’,
- c5 timestamp ‘yyyy-mm-dd hh24.mi.ss.xff’,
- c6 “to_number(:c6,’9999999999999999999999.99′)”,
- c7 “to_number(:c7,’99999.9999999′)”
- )
注:如果是追加數(shù)據(jù),將truncate改為append即可。
4、導(dǎo)入數(shù)據(jù)
- sqlldr shen/shen@db control=tbtest.ctl log=tbtest.log
其次:
1.利用DB2的db2look命令可以直接導(dǎo)出數(shù)據(jù)庫(kù)信息,包括:表結(jié)構(gòu),視圖,函數(shù),存儲(chǔ)過(guò)程(唯一遺憾的是將DB2系統(tǒng)表信息等也導(dǎo)了出來(lái),郁悶!)。
2.將創(chuàng)建表的語(yǔ)句單獨(dú)存在一個(gè)文件,將Varchar用Varchar2代替。(當(dāng)然表中字段沒(méi)有大數(shù)據(jù)類型)。
3.在Oracle sql developer中執(zhí)行建表語(yǔ)句。
4.利用PB將表逐個(gè)導(dǎo)入到Oracle中,數(shù)據(jù)遷移完成。(數(shù)據(jù)表很多,導(dǎo)了一天才導(dǎo)完,方法很笨吧?)。
建議:
1.如果是少的數(shù)據(jù)表,可以用Kettle工具,這個(gè)工具可以將源表結(jié)構(gòu)自動(dòng)轉(zhuǎn)化為目標(biāo)表結(jié)構(gòu)。
2.數(shù)據(jù)導(dǎo)出、導(dǎo)入***利用PB中完成。起初,我將表導(dǎo)成Excel,利用Oracle工具導(dǎo)入,總是出現(xiàn)許多錯(cuò)誤。而且對(duì)于Date類型數(shù)據(jù),很難處理,但PB可以自動(dòng)轉(zhuǎn)化。
3.Kettle工具功能很強(qiáng)大,但沒(méi)有時(shí)間來(lái)研究,它可能能完成很多功能。
4.PowerBuilder,PowerDesign在數(shù)據(jù)庫(kù)更改、表變動(dòng)或數(shù)據(jù)遷移有許多特性。
原文鏈接:http://272426068.iteye.com/blog/1204567
【編輯推薦】