1、在db2数据库中存在表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、创建从db2中导出数据
- export tbtest.del of del messages tbtest.msg select * from tbtest;
注:在tbtest.msg文件中有警告信息,一般是一条记录变成了多行,需要手工改改。
3、创建oracle数据导入控制文件tbtest.ctl,内容如下:
- 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即可。
4、导入数据
- sqlldr shen/shen@db control=tbtest.ctl log=tbtest.log
其次:
1.利用DB2的db2look命令可以直接导出数据库信息,包括:表结构,视图,函数,存储过程(唯一遗憾的是将DB2系统表信息等也导了出来,郁闷!)。
2.将创建表的语句单独存在一个文件,将Varchar用Varchar2代替。(当然表中字段没有大数据类型)。
3.在Oracle sql developer中执行建表语句。
4.利用PB将表逐个导入到Oracle中,数据迁移完成。(数据表很多,导了一天才导完,方法很笨吧?)。
建议:
1.如果是少的数据表,可以用Kettle工具,这个工具可以将源表结构自动转化为目标表结构。
2.数据导出、导入***利用PB中完成。起初,我将表导成Excel,利用Oracle工具导入,总是出现许多错误。而且对于Date类型数据,很难处理,但PB可以自动转化。
3.Kettle工具功能很强大,但没有时间来研究,它可能能完成很多功能。
4.PowerBuilder,PowerDesign在数据库更改、表变动或数据迁移有许多特性。
原文链接:http://272426068.iteye.com/blog/1204567
【编辑推荐】