SQLULDR2生成文件时增加了对MySQL转义符的支持, 并且支持导出成MySQL用的Insert回插脚本, 也支持通用的Insert回插脚本. 针对不同的选项, 用大约100万条记录的数据在笔记本上做了测试, 测试表有8个字段, 包括字符,数字和日期类型.

    先是测试不做任何转义符处理, 生成文本文件的速度, 基本上受制于笔记本硬盘写出的速度了.

C:\>sqluldr2 scott/tiger query=emp_his
      0 rows exported at 2009-10-30 22:37:14, size 0 MB.
  961307 rows exported at 2009-10-30 22:37:21, size 48 MB.
        output file uldrdata.txt closed at 961307 rows, size 49 MB.

    接下是生成转义符处理过后的, MySQL用的文本文件, 速度在这次测试环境下没有下降.

C:\>sqluldr2 scott/tiger query=emp_his escape=0x5c quote=0x22 null=0x5cN field=0x2c record=0x0a
      0 rows exported at 2009-10-30 22:38:49, size 0 MB.
  961307 rows exported at 2009-10-30 22:38:56, size 52 MB.
        output file uldrdata.txt closed at 961307 rows, size 56 MB.

    测试生成MySQL插入用的Insert SQL文件, 速度在这次测试环境下也没有下降.

C:\>sqluldr2 scott/tiger query=emp_his escape=0x5c quote=0x27 null=null field=0x2c format=mysql table=emp_his
      0 rows exported at 2009-10-30 22:39:28, size 0 MB.
  961307 rows exported at 2009-10-30 22:39:34, size 56 MB.
        output file uldrdata.txt closed at 961307 rows, size 60 MB.

    生成普通的Insert SQL文件, 因为每一条记录都是一个Insert语句, 所以文件很大, 花在IO上的时间多了一些.

C:\>sqluldr2 scott/tiger query=emp_his  quote=0x27 null=null field=0x2c format=sql table=emp_his
      0 rows exported at 2009-10-30 22:40:01, size 0 MB.
  961307 rows exported at 2009-10-30 22:40:11, size 124 MB.
        output file uldrdata.txt closed at 961307 rows, size 128 MB.

    生成100万条记录的Insert SQL语句的速度基本上没有下降, 没有因为处理逻辑的复杂而增加处理时间, 功能增强而性能不减, 实属不易.

    当你需要迁移Oracle数据到MySQL或其他数据库时, 不妨用用SQLULDR2, 还可以生成普通的Insert SQL语句, 来迁移数据到不知名的小数据库, 比如说SQLite, Microsoft Access等.