« 让ociuldr支持1000个列 »
Tools » http://www.anysql.net/tools/ociuldr_1000_columns.html 2009-03-12原来想一个表512个列已经够多了, 于是就给ociuldr设计了最多512个列, 没想到有网友用它来导出一个有700多个列的表, 遇到问题了. 既然有真实需求了, 就处理一下程序吧, 现在支持1000个列了. 在改进时还发现了程序的一个Bug, 在程序的宏定义那儿定义了最大列数的宏, 但程序中却没有全部引用这个宏, 有一处写死了512, 怪不得网友下载源代码编译后还是有问题, 但现在好了.
就再多改一点吧, 第二个更改需求来自我自已, 在指定登录信息时, 原来一定要用user选项, 如下所示:
ociuldr user=scott/tiger …..
用习惯了sqlplus和sqlldr后, 在输入登录信息时总是省了”user=”部份, 干脆改一下算了, 两种都可以. 如下所示:
ociuldr user=scott/tiger …..
ociuldr scott/tiger …..
第三个改更属于调优方面的, 当生成固定长度格式时, 如果是数字类型, 会统一生成宽度为40字节的字符, 现在改为列定义中的精度加1, 如果定义中没有指定精度, 则为40字节长度.
number : 40 bytes
number(10) : 11 bytes
工具软件总在实践中得到提升, 其他人有没有类似需求, 或是新的需求?


MAX_SELECT_LIST_SIZE=1023?
但是数据库最多就1000
这个没关系的, 宏定义只是定义数组大小用的.
多谢你的优化。
另外再提几个需求,呵呵
1、支持自定义文件大小(或行数)来生成多个文件,而不是现在按50万行分文件
2、支持按某个字段的值分文件,这样就不用写多个语句来多次访问表来生成文件了(如果该值有上万个,访问上万次的话,效率还是会很低的)。如:select dep,a.* from T a,可以按dep的值来分文件,但是输出到文件中的只是a.*的内容。
第二个需求是不会去支持的,这个需求不普遍,第一个可以考虑.
现在也不是说50万行就一个文件, 而是可以指定多少个50万行分一个文件,如batch=4那就是200万行一个文件.