迁移之路任重而道远,如何迁移才能比较让人比较放心呢?这里给出一个技巧,希望对你的迁移有所帮助。 1、在db2数据库中存在表tbtest,有下列类型字段! ?0 q/ s8 `# h. G) U
列名db2oraclec1char(10)char(10)c2varchar(10)varchar2(10)c3integernumber(10)c4datedatec5timestamptimestampc6decimal(24,2)number(24,2)c7decimal(12,7)number(12,7)' `) E: z1 u; _2 o+ N' N- Z6 E. @
2、创建从db2中导出数据
3 Y. z, |) A) p' f' C export tbtest.del of del messages tbtest.msg select * from tbtest; `3 d4 U' Z0 |6 @' X
注:在tbtest.msg文件中有警告信息,一般是一条记录变成了多行,需要手工改改。
( x7 N) u% C: F( \5 ~* i6 d 3、创建oracle数据导入控制文件tbtest.ctl,内容如下:
1 h+ e) ?0 \/ }8 y- O3 g. s2 w7 S+ i+ \1 E
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′)” ) 注:如果是追加数据,将truncate改为append即可。
; m9 I) L- k- r; q 4、导入数据; M! h" v$ z) j5 f
sqlldr shen/shen@db control=tbtest.ctl log=tbtest.log
5 v! s8 s; `1 S- K" E* @ 其次:
& y0 ` F! ^/ s4 ^4 K2 H8 Q 1.利用DB2的db2look命令可以直接导出数据库信息,包括:表结构,视图,函数,存储过程(唯一遗憾的是将DB2系统表信息等也导了出来,郁闷!)。6 P! H2 N: b, a, W' ^8 X
2.将创建表的语句单独存在一个文件,将Varchar用Varchar2代替。(当然表中字段没有大数据类型)。5 ~3 R7 V( w: }
3.在Oracle sql developer中执行建表语句。
: k C/ u! y6 `' @7 Z/ L 4.利用PB将表逐个导入到Oracle中,数据迁移完成。(数据表很多,导了一天才导完,方法很笨吧?)。
( y. n% X' H9 M9 f 建议:5 p& |" U. V k+ C1 Q
1.如果是少的数据表,可以用Kettle工具,这个工具可以将源表结构自动转化为目标表结构。- O0 E# i" u+ n7 y9 M0 }% q s
2.数据导出、导入最好利用PB中完成。起初,我将表导成Excel,利用Oracle工具导入,总是出现许多错误。而且对于Date类型数据,很难处理,但PB可以自动转化。
7 L8 j/ b+ B" } 3.Kettle工具功能很强大,但没有时间来研究,它可能能完成很多功能。9 P# L+ s" H% [ v7 [1 ~, d1 \% Z
4.PowerBuilder,PowerDesign在数据库更改、表变动或数据迁移有许多特性。 |