MySQL表与数据向Oracle移植(使用Oracle SQL Developer工具)
MySQL表与数据向Oracle移植(使用Oracle SQL Developer工具)
回锅菜鸟 2013-12-24 21:43:30 22920 收藏 7
分类专栏: 数据库
版权
今天接到一个任务,让我把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等....很悲剧...又是体力活...)
————————————————
版权声明:本文为CSDN博主「回锅菜鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012814041/java/article/details/17530141