设为首页 收藏本站
查看: 1229|回复: 0

[经验分享] 从Oracle迁移数据到MySql方法大全

[复制链接]

尚未签到

发表于 2016-8-3 17:53:50 | 显示全部楼层 |阅读模式
  最近工作需要从Oracle迁移大量数据到MySql,由于涉及不深,便网上学习了很多的方法,现总结Oracle迁移大量数据到MySql如下:
  一,牛人编写的Oracle到MySQL的数据迁移工具

从Oracle迁移数据到MySQL的小程序,ora2mysql下载地址 http://www.anysql.net/software/ora2mysql.zip
使用方法如下:
    D:\>ora2mysql user1=scott/tiger user2=/@localhost:3306:test table=emp
            0 rows processed at 2011-04-02 15:03:08.
            2 rows processed at 2011-04-02 15:03:08.

    在速度方面,由于不支持Array操作,因此速度比较慢,希望Oracle能让SQL * Plus也能连接MySQL库,或改造一下MySQL客户端,增加Array接口。

    D:\>ora2mysql user1=scott/tiger user2=/@::test table1=emp_bak table2=emp
            0 rows processed at 2011-04-02 19:48:51.
        100000 rows processed at 2011-04-02 19:49:17.
        200000 rows processed at 2011-04-02 19:49:42.
        300000 rows processed at 2011-04-02 19:50:07.
        400000 rows processed at 2011-04-02 19:50:32.
        500000 rows processed at 2011-04-02 19:50:57.
        600000 rows processed at 2011-04-02 19:51:23.
        700000 rows processed at 2011-04-02 19:51:48.
        800000 rows processed at 2011-04-02 19:52:14.
        900000 rows processed at 2011-04-02 19:52:39.
      1000000 rows processed at 2011-04-02 19:53:03.
      1100000 rows processed at 2011-04-02 19:53:29.
      1200000 rows processed at 2011-04-02 19:53:56.
      1300000 rows processed at 2011-04-02 19:54:24.
      1400000 rows processed at 2011-04-02 19:54:53.

    目前还不支持BLOB类型, 也不支持字符集的设置
  作者地址:http://www.anysql.net/tools/oracle-mysql-data-migration-tool.html/comment-page-1#comment-4146


二,从oracle导数据到mysql,使用命令
   (1)在使用pl/sql developer生成的sql文件然后插入到mysql时由于to_date()和chr()问题,insert时会失败。
   (2)phpmyadmin里面有个SQL compatibility mode 的 Oracle选项,具体作用还未知。
   (3)DBA高效数据迁移方法:先导出成文本,然后LOAD DATA 命令直接导入。
建议用

        select u_id||'&'||u_pid||'&'||str_1||'&' ||str_2||'&' ||str_3||'&'||tm_create_time   from table_foo

        这样的形式,在sql plus里面导出用&分割的数据,然后在mysql里面用

        load data local infile '~/table_foo' into table tbl_gbase_inf fields terminated by '&';

        导入。

如果str里面包含多行文本,而默认是文本文件里一行对应数据库里一行数据的,多行文本被误认为是多行数据,格式就不对,导入出错。可以在pl/sql developer里面进行以下查询:

select t.*,'$' from tbl_foo t

        用$作为一行数据的结束符,这样即使遇到回车,mysql仍然能够正确处理了。然后把结果全选,右键菜单导出结果到TSV文件("导出结果"->"TSV文件")。这个文件的格式就是一行一项数据的文本文件了,而且字段之间是用tab分隔的,正好就是load data命令的默认分隔符。
        在select语句里加了一个'$'作为最后一个域,也就是说在文本文件里,它前面会有一个tab,后面会有一个回车换行。所以要用ultraedit把'\t\$\r\n'(Ultredit正则)都替换成'$',这样一搞,文本文件基本上没法看了,但在load edit眼里,它就是一个正好合胃口的美味的数据源了。用如下命令导入:

load data local infile '~/table_foo' into table tbl_gbase_inf lines terminated by '%';show warnings;

回车搞定。可以在文件名和into之间插上replace关键字,自动替换掉原有数据。 注意,load data可能不是立即生效的,可以show processlist;看看是否被delay了,过一段时间表没人访问应该就会插进去了。  另外,如果插入的中文显示出来是乱码,就用
show   variables   like   "%char%";
  看看结果是不是长这样的:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

        如果database或server的字符集不是utf8,用set 命令将其改为utf8,然后重新load data,应该就不会是乱码。

三,使用mysql工具迁移数据

        1.MySQL Administrator —— MySQL 服务器的管理利器。这个工具解决了MySQL管理的很多问题,譬如:可以让你简单通过GUI界面模式选择热备份数据库计划,或者是冷备份,你可以方便的选择备份时间,每周或是每日的什么时候进行。
        2.MySQL Query Browser —— 查询工具,使用起来也很简单,而且支持调试等功能。
        3.MySQLMigration Kit —— 数据库迁移工具,如何将现有的Oracle或MSSQL数据库转移到MySQL上,如果你水平够高,当然自己直接搞,对一般用户,MySQL开发者还是很贴心的,因为他们知道,很多人不愿意选择这个免费数据库的原因其实是因为迁移的成本以及复杂度。
        所以有了这个工具,一般人员就可以很简单的将现有的Oracle和MSSQL数据库迁移到MySQL上了(以后估计还会有针对其他数据库的迁移工具,等着吧)。现版本的Migration Kit不支持对Stored Procedure的迁移,function或Stored Procedure的迁移。

  MySQL Migration Kit下载地址:www.mysql.com/products/tools/migration-toolkit/

四,推荐数据迁移转换网站
  http://www.convert-in.com/ora2sql.htm
        该网站支持一下数据库的数据迁移,具体的效果还未一一测试过。
Accessto MySQL,Access to Oracle,DBF to MySQL,Excel Export Kit,Excel to MySQL,Excel to Oracle,MSSQL to MySQL,MySQL Migration Toolkit,MySQL to Access,MySQL to Excel,MySQL to MSSQL,MySQL to Oracle,Oracle Migration Toolkit,Oracle to MySQL,OraDump Export Kit,OraDump to Access,OraDump to CSV,OraDump to Excel,OraDump to MSSQL,OraDump to MySQL,PDF to Excel,PDF to Word,PDF to XML,PDF Export Kit,PostgreSQL-to-MySQL
  
  博文地址:从Oracle迁移数据到MySql方法大全
  更多:

  •   Microsoft.Jet.OLEDB.4.0异常解决方案  (2012-5-1 1:14:40)
      详解ORACLE锁的教程  (2011-8-19 20:14:1)
      Oracle学习笔记,Oracle完全学习文档  (2011-4-19 23:27:4)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-252413-1-1.html 上篇帖子: ORACLE常用傻瓜問題1000問(之一) 下篇帖子: Oracle查询数据表结构(字段,类型,大小,备注)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表