一网友导出了7亿多条记录之后, 生成了一个50g大小的文本文件, 却发现Perl处理起来比较难, 于是问我是不是可能导出成几个文件. 现在对程序作了改进, 增加了一个命令行选项:batch. 指定在几个batch后切换文件名, 默认一个batch是50万条记录, 如果指定batch为2就表示100万条记录换一个文件. 默认这个选项值是0, 就是指不生成多个文件. 在指定batch选项后, 请指定file选项来定义生成的文件名, 中间请包含”%b”字样, 在生成文件时, “%b”会被打印成序号. 例如要导出下面的表:

SQL> SELECT COUNT(*) FROM T_OBJID;

  COUNT(*)
———-
   2430720

    用如下命令进行导出, 请观查log输出:

C:\TEMP>ociuldr user=anysql/anysql query=”select * from t_objid” batch=2 file=test_%b.txt

       0 rows exported at 2006-11-23 21:09:19
  500000 rows exported at 2006-11-23 21:09:20
1000000 rows exported at 2006-11-23 21:09:21
         output file test_1.txt closed at 1000000 rows.
  500000 rows exported at 2006-11-23 21:09:21
1000000 rows exported at 2006-11-23 21:09:22
         output file test_2.txt closed at 1000000 rows.
  430720 rows exported at 2006-11-23 21:09:22
         output file test_3.txt closed at 430720 rows.

    请大家重新下载, 或下载源代码来编译. 以前的Linux版本在编译时没有加上64Bit IO的支持, 可能不能导出大于4GB的数据.