隨筆-314  評(píng)論-209  文章-0  trackbacks-0

          #!/sbin/sh

          ######################################
          ## 名稱: infuser_load.sh
          ## 描述: 通用接口文件 導(dǎo)入數(shù)據(jù)庫(kù)
          ## 參數(shù): owner table_name
          ## 作者: xxx
          ## 日期: 2011-03-04
          ######################################

          ##owner
          owner=$1
          ##table_name
          table_name=$2
          ##batchId
          batchId=$3
          ##day_id
          day_id=$4

          ##日期[YYYYMMDD]
          DAYID=`date +'%Y%m%d'`
          ##月份[YYYYMM]
          MONTHID=`date +'%Y%m'`
          ##shell文件目錄
          sh_dir=/inffile/shell/
          cd ${sh_dir}

          ##load文件###########################
          ##file_name
          file_name=`sqlplus -s infuser/xxx@DATACK <<EOF
          set heading off feedback off pagesize 0 verify off echo off
          select replace(replace(to_char(file_name), '@DAYID@', '${DAYID}'), '@MONTHID@', '${MONTHID}')
            from datackdb.inf_file_def
           where owner = '${owner}'
             and table_name = '${table_name}'
             and state = '00A'
             and rownum <= 1;
          exit
          EOF`
          #echo "${file_name}"
          ##ctl_file
          ctl_file=`sqlplus -s infuser/xxx@DATACK <<EOF
          set heading off feedback off pagesize 0 verify off echo off
          select replace(replace(to_char(ctl_file), '@DAYID@', '${DAYID}'), '@MONTHID@', '${MONTHID}')
            from datackdb.inf_file_def
           where owner = '${owner}'
             and table_name = '${table_name}'
             and state = '00A'
             and rownum <= 1;
          exit
          EOF`
          #echo "${ctl_file}"
          infile=""
          for fname in $file_name
          do
            if [ -r ${fname} ]
            then
             infile=$infile"INFILE '${fname}'\n"
            fi
          done

          #是否包含@INFILE@字符串的判斷
          if echo "$ctl_file"|grep -q "@INFILE@"
          then
          #分隔符前字符串
          echo "${ctl_file%%@INFILE@*}" >${table_name}.ctl
          #文件名
          echo "${infile}" >>${table_name}.ctl
          #分隔符后字符串
          echo "${ctl_file##*@INFILE@}" >>${table_name}.ctl
          else
          echo "${ctl_file}" >${table_name}.ctl
          fi

          #導(dǎo)入數(shù)據(jù)
          sqlldr infuser/infuser@DATACK control=${table_name}.ctl direct=y errors=1000

          #刪除控制文件
          #rm ${table_name}.ctl
          #rm ${table_name}.log

          ##寫(xiě)消息
          sqlplus infuser/infuser@DATACK <<EOF
          insert into datackdb.inf_data_msg (OWNER, TABLE_NAME, FWF_NO, LAN_ID, DAY_ID, STATE, STATE_DATE, COMMENTS)
          values ('${owner}', '${table_name}', '${batchId}', -1, '${day_id}', '00A', sysdate, '');
          exit
          EOF

          date +'%Y-%m-%d %T' >>param.txt
          echo "$0 $*" >>param.txt
          echo "$0 $* -- 成功"

          posted on 2011-03-04 15:23 xzc 閱讀(553) 評(píng)論(0)  編輯  收藏 所屬分類: linux/unix
          主站蜘蛛池模板: 淅川县| 永昌县| 东辽县| 巧家县| 常熟市| 文安县| 黎平县| 方正县| 高要市| 石泉县| 黄大仙区| 呼玛县| 洪雅县| 拉萨市| 江源县| 行唐县| 邮箱| 阿合奇县| 石河子市| 澄城县| 乐亭县| 会理县| 兴仁县| 沂水县| 溧水县| 昭苏县| 蕉岭县| 拜泉县| 盐津县| 田东县| 义乌市| 阳朔县| 呼伦贝尔市| 兴宁市| 柏乡县| 康平县| 鹤岗市| 泰和县| 剑阁县| 昆明市| 巴中市|