mysql到oracle的移植

时间:2011-01-29 16:23:00 

第一步:建与mysql同构的oracle数据库实例,并更新数据。
      1.期望将mysql导出成与oracle通用的sql语句,通过该语句进行更新。
      2.如果1不能做到,可先将数据库结构(表结构等)导出,在通过insert语句,或execl(限制:最多只能6w多条记录)进行导出、导入。
第二步:一边设计新库,一边写老库到新库的同步程序。
      1.通过dblink进行连接,用存贮过程同步。
      2.对于数据量为千万级的表需要单独(特别)处理。

2.mysql到oracle的整理工作

1.将表结构文件与数据文件分开
2.将"替换为null(替换为null即删除)
3.将`替换为null
4.将int替换为number,将bigint替换为number,将decimal替换为number,将float替换为number,将unsigned替换为null
5.将char替换为varchar2,将varchar替换为varchar2,将text替换为blob
6.将timestamp替换为date,将datetime替换为date
7.将CURRENT_TIMESTAMP替换为sysdate
8.将character set gb2312 替换为null,将DEFAULT CHARSET=gbk 替换为null
9.将表名前的数据库名替换为null。如:3yxupupup.module中将3yxupupup.删掉
10.将ENGINE=InnoDB替换为null,将ENGINE=MyISAM替换为null

11.将default * 放置在NOT NULL之前
12.pk  : PRIMARY KEY (*)可以不进行替换,如果想要替换可替换为 alter table 表名 add primary key (主键列名);如:alter table DEPTLIST add primary key (DEPTID);
13.uk  :
14.fk  :
15.idx : KEY NewIndex1 (*)替换为 create index 索引名 on 表名 (索引列名);如:KEY NewIndex1 (timelevel,buglevel,moduleid)--》 create index idx_task_level on task (timelevel,buglevel,moduleid);

16.增加表说明:comment on table 表名 is '说明信息'; 如:comment on table deptlist is '部门表';
17.将列说明 COMMENT '列说明信息' 替换为 comment on column 表名.列名 is '列说明信息';如:comment on column deptlist.deptid is '部门编号,保持与RTX一致';
18.将自增长功能  主键列auto_increment替换为null,表尾 AUTO_INCREMENT=当前值 替换为sequence+trigger
   如:CREATE TABLE doing (doingid number(11) NOT NULL,...) AUTO_INCREMENT=8 ;  替换为
-- create sequence
create sequence seq_doing
minvalue 1
maxvalue 999999999999999999999999999
start with 8
increment by 1
nocache;
--create sequence bi
create or replace trigger tri_doing_bi before insert on doing for each row
begin
 if :new.doingid<0 or :new.doingid is null then
  select seq_doing.nextval into :new.doingid from dual;
      --select substr(sys_guid(),1,32) into :new.doingid from dual;
 end if;
end;
/
21.更新数据对于日期类型需要增加to_date进行格式转换,如:'2011-01-17 20:18:42'--》to_date( '2011-01-17 20:18:42','yyyy-mm-dd hh24:mi:ss')
21.更新数据时需要注意效率问题。一般的原则是每个表处理完成都需要一个commit;如果某个表记录比较多,则每处理100条记录commit一次。
22.如果表之间存在外键及触发器,在更新数据时应该先让外键、触发器失效(disable),更新后在启用外键、触发器(enable)。
23.处理数据时需要记录日志。如:spool c:/temp/×××.log;... spool off;
24.查看日志,对于提示违反唯一性约束的记录分为两种情况:一、记录重复,违反了主键、唯一键、唯一索引,则不需要特殊处理;二、有人调整了唯一键、唯一索引,则需要确认后特殊处理。
   对于提示违反完整性约束的记录是指违反了外键约束(父表没有,子表有,即违反完整性约束),需要特殊处理。
  
31.表连接不建议使用jion的写法
32.对于可能不维护值的字段请勿设置为not null 如:userinfo表
33.请将表名、列名、用户名、数据库名中的3yx*替换为yx3*
34.删除表时将 IF EXISTS替换为null,如:DROP TABLE IF EXISTS yx3_account_info;--》DROP TABLE yx3_account_info;

标签:oracle,mysql
0
投稿

猜你喜欢

  • asp更改Windows2000管理者密码?

    2010-06-26 11:03:00
  • Array.prototype.slice

    2010-05-07 12:43:00
  • 简析 IOS 程序图标的设计

    2011-04-28 09:39:00
  • 用户研究中的人物角色

    2010-02-08 12:15:00
  • MySQL手动安装方法与中文解决方案

    2011-04-25 18:21:00
  • 内联格式化模式(line-height原理)

    2008-06-29 14:37:00
  • Yahoo!网站性能最佳体验的34条黄金守则——JavaScript和CSS

    2008-05-29 13:34:00
  • 如何使用sql语句来修改数据记录

    2007-06-21 11:48:00
  • ASP与数据库应用(给初学者)

    2009-03-09 18:32:00
  • SQL和Oracle对数据库事务处理的差异性

    2009-10-14 09:43:00
  • 扫盲大讲堂:SQL查询结果集对注入的影响及利用

    2009-09-05 09:49:00
  • HTML5硝烟弥漫

    2009-07-06 14:44:00
  • 5个充满想象力的Web调色板

    2008-08-02 12:55:00
  • 泛泛而谈界面中的斑马纹设计

    2010-07-15 12:59:00
  • IE和Firefox的js兼容性整理

    2007-11-21 19:40:00
  • ASP网站程序自动升级实现的方法

    2008-10-15 14:28:00
  • asp伪继承初探_实例代码

    2011-04-19 10:32:00
  • 不要使用@import[译]

    2009-05-01 12:01:00
  • 黄相如:如何做好用户体验

    2008-06-04 17:34:00
  • js打开新窗口方法代码收集

    2007-09-05 19:20:00
  • asp之家 网络编程 m.aspxhome.com