隨筆-314  評論-209  文章-0  trackbacks-0

          #!/sbin/sh

          ######################################
          ## 名稱: infuser_load.sh
          ## 描述: 通用接口文件 導(dǎo)入數(shù)據(jù)庫
          ## 參數(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

          ##寫消息
          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) 評論(0)  編輯  收藏 所屬分類: linux/unix
          主站蜘蛛池模板: 紫云| 道孚县| 香港| 富川| 简阳市| 建德市| 永宁县| 庄河市| 庆云县| 马边| 若羌县| 池州市| 太康县| 思南县| 安塞县| 洛南县| 东丽区| 安宁市| 芦溪县| 双辽市| 同江市| 邢台市| 永昌县| 五莲县| 高密市| 乌兰浩特市| 盘锦市| 车致| 麻城市| 黑河市| 潼关县| 濮阳县| 泾源县| 大田县| 玉林市| 顺平县| 浑源县| 库伦旗| 九台市| 朝阳县| 闵行区|