从Oracle迁移数据到MySql方法大全

最近工作需要从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.MySQL Migration 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
        该网站支持一下数据库的数据迁移,具体的效果还未一一测试过。
Access to 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方法大全

更多:

猜你喜欢

转载自bywei.iteye.com/blog/1506780
今日推荐