Oracle数据导入Mysql中

为了生产库释放部分资源,须要将API模块迁移到mysql中,及须要导数据。mysql

尝试了oracle to mysql工具,迁移时报错不说,这么大的数据量,用这种简陋的工具不大可靠。sql

意外发现平时用的数据库视图工具Navicat Premium中有数据迁移工具,意外的好用。这个工具自己支持mysql,oracle,sqlLite,PostgreSql数据库,所以而也提供了在不一样数据库之间迁移数据的功能。数据库

迁移以前,先确保你创建了这两个数据库的connection。选择Tools/DataTransfer。oracle

\

选择源数据库,选择你要迁的表,目标数据库。
<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20141101/2014110109051329.png" alt="\">app

选择周边。工具

\

迁移过程,左上角为进度。post

 

-----------------------------------------------------------------------------------------------------------------------
二.使用MySQL Migration Toolkit快速将Oracle数据导入MySQL
使用MySQL Migration Toolkit快速将Oracle数据导入MySQL
上来先说点废话
本人最近在学习一些数据库方面的知识,以前接触过Oracle和MySQL,最近又很流行MongoDB非关系型数据库,因此干脆一块儿研究一下,对比学习中找不一样,首先说一下本人使用的数据库版本和可视化工具
Oracle10G—PL/SQL Developer9
MySQL5.5.29—MySQL Workbench6.0
MongoDB2.4.9(32bit最大2G)—Robomongo0.8.4
为了保持数据的一致,把现有Oracle中的一部分数据移植到MySQL中,百度以后发现MySQL Migration Toolkit不错,现将步骤写出跟你们分享
1、安装MySQL Migration Toolkit
先到http://dev.mysql.com/downloads/gui-tools/5.0.html下载MySQL GUI Tools(其实就是一个MySQL管理工具),其中就包括MySQL Migration Toolkit工具,一路next安装完毕
2、第一次运行须要加载ojdbc14.jar包

运行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中选择Oracle Database Server,若是第一次使用会告之要求加载驱动程序ojdbc14.jar,而后从新启动MySQL Migration Toolkit。学习

3、加载驱动程序以后,来到Source Database界面将变成以下的形式,在其中填写Oracle数据库的链接信息,按“Next”继续。测试

4、在Target Database中默认Database System为MySQL Server,在Connection Parameters中填写相应的MySQL数据库的链接信息,按“Next”继续。

5、通过Connecting to Server测试经过后按“Next”,到Source Schemata Selection,点选准备进行数据迁移的数据库后按“Next”继续。

6、通过Reverse Engineering测试经过后按“Next”,在Object Type Selection,点Detailed selection按钮,在下方左侧列表中选择不进行迁移的表,将其放入右侧列表后,即左侧列表剩余的表都将进行数据迁移。选择好以后按“Next”继续。

7、在Object Mapping的Migration of type Oracle Schema,若是要设置参数,点Set Parameter按钮。若是默认数据库表为UTF8的话,则选择Multilanguage;若是默认数据库表为GBK的话,则须要选择User defined,并在下方填写charset=gbk, collation=gbk_general_ci。

Migration of type Oracle Table中要设置参数点Set Parameter按钮。若是默认数据库表为UTF8的话,则选择Data consistency/multilanguage;若是默认数据库表为GBK的话,则须要选择User defined,并在下方填写addAutoincrement=yes, charset=gbk, collation=gbk_general_ci, engine=INNODB。选择好以后按“Next”继续。

8、通过Migration测试经过后,再到Manual Editing,在这里能够修改建表脚本。因为Oracle与MySQL之间语法规则的差别,一般须要对脚本的数据类型以及默认值进行调整,好比Oracle中一般会对Timestamp类型的数据设置默认值sysdate,但在MySQL中是不能识别的。在Filter中选择Show All Objects,而后在Migrated Objects中选择要修改脚本的表,再点击左下方的Advanced就能够进行脚本编辑了。修改完以后点击右侧Apply Changes按钮保存,按“Next”继续。

9、在Object Creation Options中,选择本地磁盘储存数据表结构,按“Next”继续。

10、通过Creating Objects建立全部表的结构完毕,表中并无数据,按“Next”继续。

11、一路“next”来到Data Mapping Options,选择本地磁盘储存数据表中的数据,按“Next”继续。

12、通过Bulk Data Transfer建立全部表中的数据完毕,按“Next”继续。

十3、来到summary显示这次数据转换的信息,能够保存成文件,按“Finish”完成。

须要补充一点,在导大容量数据特别是CLOB数据时,可能会出现异常:“Packets larger than max_allowed_packet are not allowed”。这是因为MySQL数据库有一个系统参数max_allowed_packet,其默认值为1048576(1M),能够经过以下语句在数据库中查询其值:show VARIABLES like '%max_allowed_packet%';修改此参数的方法是在mysql文件夹找到my.ini文件,在my.ini文件[mysqld]中添加一行:max_allowed_packet=16777216
重启MySQL,这样将能够导入不大于16M的数据了,固然这数值能够根据须要做调整。
十4、使用MySQL Workbench导入数据
点击Data Import/Restore先导入一次表结构,再导入一次表数据,完成数据库迁移
 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三. 先把oracle表中的数据另存在excel表中,再把excel表中数据导入到mysql中

这里要将oracle中表eventlogs的数据导入到mysql中。步骤以下:

    一、在PL/SQL中用select * 搜索到eventlogs表的全部数据,而后右键点击"Copy to Excel";以下图所示:

          

     二、将数据保存为excel表,并重名;以下图:

         

    三、打开mysql的可视化工具,我这里是Navicat,选择表,点击导入向导;以下图所示:

 

    四、选择上图中"导入类型"的"execel文件",而后点击"下一步";以下图所示:

        

    五、接下来会让你选择文件,选择你已经保存的excel文件,并选择“SQL Result”,以下图所示:

 

    六、而后一直点下一步直至步骤6,填充目标栏位。第一个栏位通常是空的,根据你的须要填。我这里填为"_id",并设为主键。以下图所示:

   七、而后一直点击下一步,最后一步点击开始。会出现一个“sql result”的表,重命名为你想要的表便可。如图所示:

     数据已经导入了。其中表中数据类型若不合你的要求,你能够再设计表。

 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四,手动导入Navicat
 
这多是最蠢最低效的办法,但也是最靠谱的办法。在以上3中方法都不适用的前提下,一张一张表本身在navicat for mysql里建。或者,从oracle里导出的.sql文件不能在navicat里运行sql文件来导入,由于里面有些字段属性不适用于mysql,oracle与mysql语法和字段属性仍是有区别的,因此要把建立表sql语句一一修改后,再在navicat里运行来建立表。
 
转载:http://blog.csdn.net/superit401/article/details/51547745
相关文章
相关标签/搜索