半年多前有人提出这个需求, 当时我也没有空去处理这事, 就搁下了. 今天将程序改动了一下, 增加了退出代码, 退出代码的含义如下:
0 = Successful
1 = Cannot login to database
2 = Cannot create cursor handle
3 = Cannot prepare SQL statement
4 = Cannot execute SQL query
5 = Cannot get the metadata of the result set
6 = Cannot create output file
7 = Oracle error found when fetching rows, such as ORA-01555 etc.
接下来验证一下, 先是不能连接数据库的情况:
bash-2.03$ ./ociuldr.bin user=anysql/anysq1@test query="select * from tab"
Cannot connect as anysql/anysq1@s8i.
Connection failed. Exiting...
bash-2.03$ echo $?
1
提供一个错误的SQL语句:
bash-2.03$ ./ociuldr.bin user=anysql/anysql@test query="select * from tab1"
ORA-00942: table or view does not exist
bash-2.03$ echo $?
3
将文件放到没有权限的目录中:
bash-2.03$ ./ociuldr.bin user=anysql/anysql@test query="select * from tab" file=/test.txt
15500 bytes allocated for column TNAME (1)
4000 bytes allocated for column TABTYPE (2)
20500 bytes allocated for column CLUSTERID (3)
ERROR -- Cannot write to file : /test.txt
bash-2.03$ echo $?
6
希望那位朋友可以看到这个贴子. 但是如果中间空间不够了, 可能还是得不到返回值的.
留言 (13)
ociuldr 非常好用,以前用pl/sql develop的导出到excel功能非常慢,用这个快很多
顺便提个小建议,是否能加个选项,控制第一行是否输出字段名
Posted by Ronny | May 22, 2007 10:23 AM
head=yes will do it.
使用样本:
export ORACLE_SID=vicrpt
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;export LD_LIBRARY_PATH
ociuldr_linux user=/ sql=./sr15d.sql field=, file=sr$(date +%F)_15d.csv head=yes
Posted by 木匠 | May 24, 2007 3:06 AM
我用了ociuldr,导出时出现一行数据变成两行情况,而且还有空的行。。。不知道是为什么,能解决一下吗?
Posted by swallow | Jun 7, 2007 3:23 PM
那是因为你的字段值中有回车符吧.
Posted by anysql | Jun 7, 2007 3:49 PM
我用的是 field=0x09 record=0x0a
Posted by swallow | Jun 7, 2007 4:27 PM
怎么才能测试出字段中是否有回车符并去掉它?
Posted by swallow | Jun 7, 2007 4:30 PM
你可以用replace函数. 不过我的ociuldr中是不会去改变数据值的.
Posted by anysql | Jun 7, 2007 5:05 PM
D:\ociuldr>ociuldr.exe -si user=sys/oracle query="select * from x$kqfta" field="," file=y.cvs
Cannot connect as as sysdba.
Connection failed. Exiting...
D:\ociuldr>ociuldr.exe -si query="select * from x$kqfta" field="," file=y.cvs
Cannot connect as /.
Connection failed. Exiting...
...求教
Posted by zl | Jun 8, 2007 3:25 PM
不能连接10g的sys用户, 换一个吧.
Posted by anysql | Jun 8, 2007 3:33 PM
请问ociuldr 支持导出lob字段吗???
急问!
谢谢
Posted by jaec | Jun 20, 2007 7:19 PM
不支持, 导出LOB请用lobs工具.
Posted by anysql | Jun 20, 2007 7:28 PM
谢谢 这么快就回复了,
lobs工具能提供源码吗?
再请教一个问题,前面有写如果lob字段,那么sqlldr不能direct path load
为什么呢?sqlldr不支持吗?
Posted by jaec | Jun 21, 2007 10:38 AM
如果查询字段中含有“,”,那么产生的csv文件用excel打开就会有问题了。
有没有好的解决办法(不能把字段中的“,”替换成其他的字符)?
Posted by marco.liu | Jun 28, 2007 3:02 PM