任重道远迁移路之DB2到Oracle_Oracle_数据库_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 数据库 > Oracle > 任重道远迁移路之DB2到Oracle

任重道远迁移路之DB2到Oracle

 2013/8/10 1:20:32    程序员俱乐部  我要评论(0)
  • 摘要:1、在db2数据库中存在表tbtest,有下列类型字段列名db2oraclec1char(10)char(10)c2varchar(10)varchar2(10)c3integernumber(10)c4datedatec5timestamptimestampc6decimal(24,2)number(24,2)c7decimal(12,7)number(12,7)2、创建从db2中导出数据exporttbtest.delofdelmessagestbtest
  • 标签:ORA 任重道远 迁移 Oracle

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中导出数据

    class="dp-sql">
  1. export tbtest.del of del messages tbtest.msg select * from tbtest; 

注:在tbtest.msg文件中有警告信息,一般是一条记录变成了多行,需要手工改改。

3、创建oracle数据导入控制文件tbtest.ctl,内容如下:

  1. load data 
  2. infile ‘tbtest.del’ 
  3. truncate 
  4. into table tbtest 
  5. fields terminated by ‘,’ optionally enclosed by ‘”‘ 
  6. trailing nullcols 
  7. c1, 
  8. c2, 
  9. c3, 
  10. c4 date ‘yyyymmdd’, 
  11. c5 timestamp ‘yyyy-mm-dd hh24.mi.ss.xff’, 
  12. c6 “to_number(:c6,’9999999999999999999999.99′)”, 
  13. c7 “to_number(:c7,’99999.9999999′)” 
  14. )  

注:如果是追加数据,将truncate改为append即可。

4、导入数据

  1. 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

发表评论
用户名: 匿名