0
点赞
收藏
分享

微信扫一扫

orcle迁移数据到mysql

迁移方式一(navicat)


这种迁移方式主要适合小表的一次性迁移,navicat的同步效率速度一般。


迁移开始之前,我们需要先安装navicat,在一台能访问Oracle源端和MySQL目标端的机器上安装即可。


安装完navicat之后,配置源端Oracle连接




配置目标端MySQL连接




开始进行迁移,选择工具--->数据传输




选择源端Oracle以及目标端MySQL




下一步选择要同步的表TEST,也可以选择同步全部表




传输模式选择自动,点下一步开始进行同步




传输同步完成,整个同步的效率还是较慢的,7.2W的数据,用了1分钟。


迁移方式二(navicat+sqluldr+load data infile)


这种迁移方式主要适合少量大表的一次性迁移,通过navicat工具进行Oracle-->MySQL表结构转化,再通过sqluldr将Oracle数据导出到本地文件,最后再通过load data infile将数据导入MySQL。


注:navicat工具虽然有同步数据的功能,但在实际的操作过程中,同步数据的效率以及成功率都很低,所以这里只作为数据字典转化的工具。


使用navicat工具进行表结构同步,步骤可以参考迁移方式一里面的操作,主要在数据传输同步时,选项里面只同步表结构,不创建记录。






点击开始,完成表结构同步




接下来进行数据的导出导入,先安装导出工具sqluldr


---解压安装包

unzip sqluldr2linux64.zip  

./sqluldr2linux64.bin --help

---拷贝sqluldr2linux64.bin到$ORACLE_HOME的bin目录

cp -rp sqluldr2linux64.bin $ORACLE_HOME/bin

---重命名为sqluldr2.bin

mv sqluldr2linux64.bin sqluldr2.bin

 

测试安装成功


[oracle@rac19a ~]$ sqluldr2.bin --help


SQL*UnLoader: Fast Oracle Text Unloader (GZIP, Parallel), Release 4.0.1

(@) Copyright Lou Fangxin (AnySQL.net) 2004 - 2010, all rights reserved.


License: Free for non-commercial useage, else 100 USD per server.


Usage: SQLULDR2 keyword=value [,keyword=value,...]


Valid Keywords:

  user    = username/password@tnsname

  sql     = SQL file name

  query   = select statement

  field   = separator string between fields

  record  = separator string between records

  rows    = print progress for every given rows (default, 1000000)  

  file    = output file name(default: uldrdata.txt)

  log     = log file name, prefix with + to append mode

  fast    = auto tuning the session level parameters(YES)

  text    = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).

  charset = character set name of the target database.

  ncharset= national character set name of the target database.

  parfile = read command option from parameter file  


 for field and record, you can use '0x' to specify hex character code,

 \r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 '=0x27

 

使用sqluldr导出为文本类型为MYSQL


sqluldr2.bin user=test/oracle@pdb1  query="select * from test"   text=MYSQL  field=',' charset=AL32UTF8 head='NO' file=/home/oracle/test_001.csv log=test.log

 

导出过程很快,58w的数据,只需要7秒


0 rows exported at 2022-10-12 22:18:14, size 0 MB.

     583680 rows exported at 2022-10-12 22:18:21, size 108 MB.

        output file /home/oracle/test_001.csv closed at 583680 rows, size 108 MB.

 

再将从Oracle导出的MYSQL文件导入MySQL数据库


LOAD DATA INFILE '/tmp/test_001.csv' INTO TABLE test FIELDS TERMINATED BY ',' ENCLOSED BY '"';

 

导入过程很快,58w的数据,只需要13秒


test@mysql.sock 22:38:  [db1]>LOAD DATA INFILE '/tmp/test_001.csv' INTO TABLE test FIELDS TERMINATED BY ',' ENCLOSED BY '"';

Query OK, 583680 rows affected (13.43 sec)

Records: 583680  Deleted: 0  Skipped: 0  Warnings: 0

 

整个数据同步过程还是较快的,但操作步骤较为繁琐,不太适合多表操作。


举报

相关推荐

0 条评论