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;


猜你喜欢
- 本文实例讲述了JS与jQuery判断文本框还剩多少字符可以输入的方法。分享给大家供大家参考,具体如下:javascript部分:functi
- 当讨论Request对象内容时,要研究的集合之一就是ServerVariables集合。这个集合包含了两种值的结合体,一种是随同
- 前言本文给大家介绍的是利用Python抓取手机归属地信息,文中给出了详细的示例代码,相信对大家的理解和学习很有帮助,以下为Python代码,
- 利用原生js实现一个简易的计算器(附详细注释),供大家参考,具体内容如下<!DOCTYPE html><html lang
- github源码地址:https://github.com/kuishou68/python各类图表的实现效果爬取的说说内容个性化说说内容词
- degrees()方法从弧度转换到度角x语法以下是degrees()方法的语法:degrees(x)注意:此函数是无法直接访问的
- 一、安装前的准备1、下载安装程序包,可到MySQL官方网站www.mysql.com下载,如图1-1:图1-1下载后的安装文件如图1-2所示
- 用法: 按住鼠标左键拖拽一个框后释放洗洗睡了<!DOCTYPE html public "-//W3C//DTD XHTML
- 通过锁机制,可以实现多线程同时对某个表进行操作。如下图所示,在某个时刻,用户甲、用户乙、用户丙可能会同时或者先后(前面一个作业还没有完成)对
- 在安装pip前,请确认win系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录
- 在Centos中安装完MySQL数据库以后,不知道密码,这可怎么办,下面给大家说一下怎么重置密码1、修改配置文件my.cnf 按i编辑[ro
- 使用Python的内置方法dir,可以范围一个模块中定义的名字的列表。官方解释是:Docstring:dir([object]) ->
- 本文讲述了LINUX下Oracle数据导入导出的方法。分享给大家供大家参考,具体如下:一. 导出工具 exp1. 它是操作系统下一个可执行的
- 本文实例讲述了Laravel框架实现利用 * 进行sql语句记录功能。分享给大家供大家参考,具体如下:利用 * 进行sql语句记录1、监听s
- 布尔表示两值之一:True 或 False。 布尔值在编程中,通常需要知道表达式是 True 还是 False。可以计算 Python 中的
- 问题一:TypeError: a bytes-like object is required, not 'str'解决:该问
- 公共的抽象基类import numpy as npfrom abc import ABCMeta, abstractmethodclass
- 什么是 Python 中的 Lambda 函数今天我们来学习 Python 中的 lambda 函数,并探讨使用它的优点和局限性Let
- 前言问题:我们在放大图片的过程中,放大的目标图像和原图图像之间会存在不同。放大的基本思想:第一步:将目标图像进行缩小到原图像的尺寸,虚拟的将
- round()方法返回 x 的小数点四舍五入到n个数字。语法以下是round()方法的语法:round( x [, n] )参数