下面是我写的一个shell脚本,来调用sqlload函数将文本导入到数据库表spms_sp_temp中,其中需要导入的文本文件放到sp/data下,导入后产生的日志文件放在sp/log下,生成的控制文件放在sp/ctl目录下。脚本内容如下:
#!/bin/sh
create_customer_file()
{
        echo "LOAD DATA
INFILE 'sp/data/$1'
INTO TABLE zxdbm_ismp.spms_sp_temp
APPEND 
FIELDS TERMINATED BY \"|\"
TRAILING NULLCOLS
(SPNAME CONSTANT,SPCODE,SUBSCRIBEURL,UNSUBSCRIBEURL,ACCESSNO,RESOUCESTARTTIME)
" >sp/ctl/$1.ctl       
}for file in $( ls *.* 2>/dev/null )
                    do
                        if [ -s $file ]
                        then
                          echo "正在导入文件[$file] ..."
                          create_customer_file  $file
                          sqlldr zxdbm_ismp/zxin_smap@$DB_SERV control="sp/ctl/$file.ctl" log="sp/log  $file.log"              fi          
                    done
echo "导入结束。"
表spms_sp_temp的所有字段:SPNAME ,SPCODE,SUBSCRIBEURL,UNSUBSCRIBEURL,ACCESSNO,RESOUCESTARTTIME现在想实现下面2个需求:【1】对于SPCODE字段,我想通过在调用我写的shell时,在外部输入(入./test.sh 10083),导入的时候将10083导入到spms_sp_temp表中的SPCODE字段【2】对于ACCESSNO字段,我想在用shell调用sqlload的时候,将其设置为定值1,导入到spms_sp_temp表中后,ACCESSNO字段的值为1我在网上查了以天资料,没有找到解决办法,希望大家能帮帮我,真的,我很困惑!谢谢!

解决方案 »

  1.   

    用shell掉用sqlldr和windows下面调用差不多,主要是你要组织好controlfile,log。直接把controlfile放到一个文件里,用一个变量代替他,在sqlldr里面用就可以了。
      

  2.   

    你好,需求【2】我已经解决了,请问一下,我想实现shell外部输入参数,就是需求【1】,利用sqlload函数时将外部输入的值赋给SPCODE字段的值导到表中去,怎么写呢?我不会哦~测试了好久