请问在unix主机上如何用脚本获取sqlldr的执行状态,即成功或失败。

解决方案 »

  1.   

    能否使sqlldr运行时产生log文件以便查看?
      

  2.   

    log文件内容太多
    有没有类似返回之类的我只要获得返回值就可以了,然后就可以判断是否进行出错处理。
    要是没有返回值这样的东西,有没有什么其它的好办法。请大家发表一下意见啊。
      

  3.   

    楼主认为怎样才算成功,怎样算是失败呢?
    sql loader不会返回成功标志位,但是可以指定log和bad参数,
    bad文件中会把所有失败的记录写进去也就是说,1000条数据,即使有900条数据不合法,sqlldr仍会把合法的那100条导进去我处理的方法是,如果bad文件中的记录条数与所有记录的条数的比率在5%,
    就判断其不合法,并写error文件 (sqlldr这个是不能回退事务的,所以通过一张中间表导入较好)
      

  4.   

    我现在用的是
    silent=header,feedback,partitions > sql.log我是想在sqlldr运行过程中隐藏消息(标题,反馈,分区),当出现(错误,废弃)时生成小心,并定向到sql.log中,
    现在面临的问题是当出现(错误,废弃)时,信息并不能定向到sql.log中,而是直接打印到屏幕了。
    考虑过nohup但我现在有多个sqlldr要执行,若多个sqlldr同时执行时多个sqlldr之间可能会有影响。所以每个sqlldr都有自己单独的 log文件。
    请大家继续帮忙啊!
      

  5.   

    在shell中用这种格式不能把执行结果定向到sql.log中吗?
    sqlplus $DBID/$DBPASSWORD@$SERVER @update.sql >> $logfile
    如果中途网络中断,
    是不是可以通过检测log文件是否生成来判断呢 (没有试过)多个log文件的问题,是否可以考虑把文件名设成变量,
    用系统时间或一个全局的number来做文件名标识呢
      

  6.   

    在没有指定 silent 的时候可以重定向,指定了silent后就不好使了。郁闷,调了一下午,元旦就这么过去了。我的环境是hp-ux 11.23    希望大家继续发扬风格啊。
      

  7.   


    给你个定向错误信息的例子:
    bash-2.03$ bad_cmd
    bash: bad_cmd: command not found
    bash-2.03$ bad_cmd 2&>1.log
    bash-2.03$ more 1.log
    bash: bad_cmd: command not found
    bash-2.03$
      

  8.   

    上面是shell code,而不是perl code,我只是因用它的格式而已 
      

  9.   

    sqlldr userid=%s/%s@%s control=%s log=%s bad=%s \
     data=%s  discard=%s direct=%s parallel=%s errors=%d rows=%d \
     readsize=%d bindsize=%d;echo $?>%s;Use echo $? to print return value of previous command!