MySQL表与数据向Oracle移植(使用Oracle SQL Developer工具)


        今天接到一个任务,让我把MySQL中的表与数据移植到Oracle中(也就是我们的项目需要使用Oracle),本来打算一个表一个表的改的(很傻很天 真),结果发现,光sql语句就有40多兆!从网上找了好久,参考了好多方法,最后只有这个实现了,也就是Oracle中的Oracle SQL Developer工具实现了数据库的移植,特此分享。


1、工具的准备

1.1、安装Oracle SQL Developer,我是用的是最新版本,下载后解压到任意目录即可(不含中文,空格)。

1.2、下载mysql的驱动jar文件,官网地址查出后忘了,此处免费提供下载;下载后解压到任意目录

1.3、打开Oracle SQL Developer,菜单栏中选择   工具-->首选项-->数据库-->第三方JDBC驱动程序中选择mysql驱动解压后的jar文件,然后点击确定。

2、建立Oracle数据库与用户(用来承载mysql移植来的数据)-->此处操作后续补齐,网上资料很多,当然,此处也可以省略(如果你的项目中不需要额外的数据库和用户的话)


2.1、在数据库建好之后,为了给用户授予权限,我们创建一个管理员的连接(当然,你也可以在命令行中连接oracle完成授权操作)


2.2、建立用户并授予权限,授予权限(此处指你已经创建了自己的数据库,或者使用oracle默认的数据库)

另:此处提供简略版创建用户与表空间的结构,此处不做解释,后期补充

--创建临时表空间    aaaa意义:临时表空间,临时表空间文件 
create temporary tablespace aaaa_temp
tempfile 'G:\software\Java_database\oracle\runtimebj\aaaa_temp.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;

--创建数据表空间    aaaa意义:表空间,表空间文件
create tablespaceaaaa
logging
datafile 'G:\software\Java_database\oracle\runtimebj\aaaa.dbf'
size 100m
autoextend on
next 32m maxsize 2048m
extent management local; 

--创建用户并指定表空间        aaaa顺序意义:用户名,密码,表空间,临时表空间
create user aaaa identified byaaaa
default tablespaceaaaa temporary tablespaceaaaa_temp;
--授予message用户DBA角色的所有权限    此处的aaaa只表示用户名 
GRANT DBA TOaaaa;
grant resource to aaaawith admin option;  --需添加这句话否则连接的时候会报错...


2.3再次创建连接,使用新创建的用户连接



2.4、连接建立后,右键连接,移植资料档案库-->关联移植资料档案库-->点击确定


2.5、连接mysql(就是需要进行移植到的mysql数据库),点击选择数据库后确定


3、移植mysql中的表到数据库

3.1、在刚刚建立的mysql中选择需要进行移植的数据库(也可以点击加号,批量选择需要移植的表,此处移植整个数据库,所以我在数据库上右键了),右键选择捕获方案

等待


3.2、在刚捕获的模型中选择需要的数据库或者表等,点击转换为Oracle模型


3.3、设置数据映射,一般默认即可(但是我的项目中mysql使用了datetime和timestamp,如果默认会转为oracle中的date,从而失去了时分秒,如果必须需要十分秒的话,此处映射可以将timestamp-->timestamp,但是datetime这里好像是无法转换为timestamp,只能后面手动修改了...悲剧...),此后点击应用,同样进入进度条


3.4、右键点击刚刚捕获的方案,因为在生成的时候,他会根据方案名称重新创建用户,并将生成的表存放到该用户下,所以建议重命名方案,将其修改为我们需要的用户名称(用户名与密码相同),用户名称也就是我们jdbc或者hibernate连接数据库时将要使用的名称。完成后点击生成。


3.5、生成建立表的sql语句,点击下列红色框按钮开始执行...等待


3.6、执行后,在创建连接,使用我们执行sql中的用户名密码(也就是方案名称),连接后,你会发现,表已经生成了

表移植完毕


4、数据的移植

4.1、右键上次我们创建的转换的模型,选择移动数据


4.2、选择源与目标(目标是我们刚刚建立表的那个连接)


4.3、进入移动数据进度条,等待后,数据移动完成。


结束语:

              这篇文章是刚刚修改过的(2013/12/26),因为上文已经提到,datetime使用工具无法自动转换为timestamp(虽然oracle中的timestamp格式也不咋好),手动修改了很多(使用SQLyog和sql developer工具边对比边修改,方法很笨,也没找到别的方法;目前经过检测,发现数据和表都无缺失,当然,还需要进一步测试,如有错误,会随时更新...)

       好了,准备修改hibernate中的xxx.hbm.xml映射文件(需要修改主键生成策略,以及部分数据库中的字段类型,比如mysql中的timestamp需要转换为date等....很悲剧...又是体力活...)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值