加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将多个txt文件导入到ORACLE

发布时间:2020-12-12 14:25:57 所属栏目:百科 来源:网络整理
导读:iamlaosong文 将文本文件导入到数据库,如果不需要对文件进行处理,用sqlldr导入不仅方便,而且速度快。下面这个导入脚本,通过循环生成每个文本文件导入的控制文件,其中X'09'表示分隔符是TAB符,然后再调用sqlldr命令进行导入。 #import datafile that unz

iamlaosong文

将文本文件导入到数据库,如果不需要对文件进行处理,用sqlldr导入不仅方便,而且速度快。下面这个导入脚本,通过循环生成每个文本文件导入的控制文件,其中X'09'表示分隔符是TAB符,然后再调用sqlldr命令进行导入。

#import datafile that unzip by timing job: jsunzip.sh
#eidt by iamlaosong 20170926
#usage: ./jsimp.sh 20170101 BCF
# $1=OPDATE $2=SYF|BCF

BAKDIR=/home/oracle/ems_suan
CTLFILE=control.ctl 
 
for tp in CK HK JK LY TD ZY 
do  
  tbname=EMSAPP_JS_${tp}_$2_TEST
  txtfile="${BAKDIR}/$1/$1_340000_1_${tp}_$2.txt"
  # process txtfile  
  echo  "${txtfile} --> ${tbname}"
  if [ -f ${txtfile} ]; then
    # generate control file
    echo load data>${CTLFILE}
    echo infile "'${txtfile}'">>${CTLFILE}
    echo append into table $tbname>>${CTLFILE}
    echo fields terminated by "X'09'">>${CTLFILE}
    # echo optionally enclosed by "'"'">>${CTLFILE}
    if [ X"${tp}" == X"CK" ] || [ X"${tp}" == X"JK" ]; then
      echo "(JSRQ Date 'YYYYMMDD',ZBTM,YJTM,YJZLBH,YJZLMC,ZBZL,ZBZLMC,JDS,JSSX,ZLSX,JIFEIZL,JIHEZL,CLJSFDM,CLJSF,CLJDSDM,CLJDS,CLJXS,CLJ,CLJGS,SJJSFDM,SJJSF,SJJDSDM,SJJDS,SJJXSDM,SJJXS,SJJDM,SJJ,SJJGS,YCXX,FEILI,FEIYONG,MARK)">>${CTLFILE}
    elif [ X"${tp}" == X"HK" ] || [ X"${tp}" == X"LY" ]; then
      echo "(JSRQ Date 'YYYYMMDD',YLDM,YLMC,LDLSH,YLJB,YLZL,FCZDM,FCZ,JSZDM,JSZ,YJJDM,YJJ,JDJDM,JDJ,HBBH,LICHENG,PYJSFDM,PYJSF,PYJDSDM,PYJDS,PYJXSDM,PYJXS,PYJDM,PYJ,PYJGS,MARK)">>${CTLFILE}
    elif [ X"${tp}" == X"TD" ]; then
      echo "(JSRQ Date 'YYYYMMDD',PYDQ,SFTT,TDJSFDM,TDJSF,TDJDSDM,TDJDS,TDJXSDM,TDJXS,TDJDM,TDJ,TDJGS,SZFEILI,XZFEILI,MARK)">>${CTLFILE}
    elif [ X"${tp}" == X"ZY" ]; then
      echo "(JSRQ Date 'YYYYMMDD',CLJXSDM,CLJDM,MARK)">>${CTLFILE}
    fi
    # import data
    sqlldr userid=emssxjk/emssxjk control=control.ctl skip=1
    cat control.log >> impsuan.log
    # read -p "txt file: press enter to continue..." var  
  fi
done

shell脚本中逻辑或的判断除了代码中的写法外,还可以采用-o的方法,即:

if [ X"${tp}" == X"CK" -o X"${tp}" == X"JK" ]; then

判断字符串中加上一个X是防止变量tp为空时出现语法错误,本例中tp是循环变量,不会出现空值,但这种写法比较好,所以保留着。

参见:如何将CSV文件导入到ORACLE

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读