Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83103
  • 博文数量: 93
  • 博客积分: 2141
  • 博客等级: 大尉
  • 技术积分: 785
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-13 14:08
文章分类
文章存档

2011年(93)

我的朋友

分类: Oracle

2011-11-25 10:08:03

迁移之路任重而道远,如何迁移才能比较让人比较放心呢?这里给出一个技巧,希望对你的迁移有所帮助。
    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,内容如下:

  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、导入数据

    sqlldr control=tbtest.ctl log=tbtest.log

    其次:

    1.利用DB2的db2look命令可以直接导出数据库信息,包括:表结构,视图,函数,过程(唯一遗憾的是将DB2系统表信息等也导了出来,郁闷!)。

    2.将创建表的语句单独存在一个文件,将Varchar用Varchar2代替。(当然表中字段没有大数据类型)。

    3.在 sql developer中执行建表语句。

    4.利用PB将表逐个导入到中,数据迁移完成。(数据表很多,导了一天才导完,方法很笨吧?)。

    建议:

    1.如果是少的数据表,可以用Kettle工具,这个工具可以将源表结构自动转化为目标表结构。

    2.数据导出、导入最好利用PB中完成。起初,我将表导成Excel,利用Oracle工具导入,总是出现许多错误。而且对于Date类型数据,很难处理,但PB可以自动转化。

    3.Kettle工具功能很强大,但没有时间来研究,它可能能完成很多功能。

    4.PowerBuilder,PowerDesign在数据库更改、表变动或数据迁移有许多特性。

阅读(433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~