写了一个Windows上的批处理脚本, 用SQLULDR2从Oracle中查询数据, 并生成MySQL的Insert脚本, 用管道输入到MySQL中去执行.
@echo off
echo %TIME%
sqluldr2 ... table=emp_his format=MySQL quote=0x27 escape=0x53 null=null file=- | MySQL test
echo %TIME%
首先在MyISAM下测试, 先将表改成MyISAM方式存贮.
MySQL> alter table emp_his engine= myisam;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
进行数据装载测试, 可以看出还是很快的.
D:MySQL-5.0.84-win32bin>runload.bat
7:12:28.10
7:12:41.87
查一下总共迁移的记录数.
MySQL> select count(*) from emp_his;
+----------+
| count(*) |
+----------+
| 951308 |
+----------+
1 row in set (0.00 sec)
接下来在Innodb下测试, 将表改成Innodb方式存贮.
MySQL> alter table emp_his engine= innodb;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
进行数据装载测试, 可以看出比MyISAM要慢不少.
D:MySQL-5.0.84-win32bin>runload.bat
7:09:34.85
7:10:06.15
查一下总共迁移的记录数.
MySQL> select count(*) from emp_his;
+----------+
| count(*) |
+----------+
| 951308 |
+----------+
1 row in set (2.11 sec)
在MySQL中, 将同样的表从MyISAM转到Innodb, 需要多少时间?
MySQL> alter table emp_his engine= innodb;
Query OK, 951308 rows affected (16.67 sec)
Records: 951308 Duplicates: 0 Warnings: 0
对于在笔记本上测试的这个结果, 个人是相当满意的, 测试的表有8个字段, 差不多等于平均数.