여러 txt 파일 을 ORACLE 로 가 져 오기
3026 단어 Linux 응용 프로그램데이터베이스 응용
데이터베이스 에 텍스트 파일 을 가 져 옵 니 다. 파일 을 처리 할 필요 가 없다 면 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,ZBTM,YJTM,YJZLBH,YJZLMC,ZBZL,ZBZLMC,YLJB,YLZL,FCZDM,FCZ,JSZDM,JSZ,YJJDM,YJJ,JDJDM,JDJ,JSSX,ZLSX,HBBH,LICHENG,JIFEIZL,JIHEZL,PYJSFDM,PYJSF,PYJDSDM,PYJDS,PYJXSDM,PYJXS,PYJDM,PYJ,PYJGS,SJJSFDM,SJJSF,SJJDSDM,SJJDS,SJJXSDM,SJJXS,SJJDM,SJJ,SJJGS,YCXX,FEILI,FEIYONG,MARK)">>${CTLFILE}
elif [ X"${tp}" == X"TD" ]; then
echo "(JSRQ Date 'YYYYMMDD',YJTM,YJZLBH,YJZLMC,ZBZL,ZBZLMC,JSSX,PYDQ,SFTT,JIFEIZL,JIHEZL,TDJSFDM,TDJSF,TDJDSDM,TDJDS,TDJXSDM,TDJXS,TDJDM,TDJ,TDJGS,SJJSFDM,SJJSF,SJJDSDM,SJJDS,SJJXSDM,SJJXS,SJJDM,SJJ,SJJGS,YCXX,SZFEILI,XZFEILI,FEIYONG,MARK)">>${CTLFILE}
elif [ X"${tp}" == X"ZY" ]; then
echo "(JSRQ Date 'YYYYMMDD',ZBTM,YJTM,YJZLBH,YJZLMC,ZBZL,ZBZLMC,JDS,JSSX,ZLSX,JIFEIZL,JIHEZL,CLJSFDM,CLJSF,CLJDSDM,CLJDS,CLJXSDM,CLJXS,CLJDM,CLJ,CLJGS,SJJSFDM,SJJSF,SJJDSDM,SJJDS,SJJXSDM,SJJXS,SJJDM,SJJ,SJJGS,YCXX,FEILI,FEIYONG,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
셸 스 크 립 트 의 논리 적 판단 은 코드 의 쓰기 외 에 도 - o 방법 을 사용 할 수 있 습 니 다. 즉,:
if [ X"${tp}" == X"CK" -o X"${tp}" == X"JK" ]; then
판단 문자열 에 X 를 추가 하 는 것 은 변수 tp 가 비어 있 을 때 문법 오류 가 발생 하 는 것 을 방지 하 는 것 입 니 다. 이 예 에서 tp 는 순환 변수 로 빈 값 이 나타 나 지 않 지만 이런 쓰기 가 좋 기 때문에 보류 합 니 다.
참조: CSV 파일 을 ORACLE 에 가 져 오 는 방법
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
유 니 버 설 sql 일괄 처리 실행 과정sql 을 실행 하 는 일반적인 과정 입 니 다. 파 라 메 터 를 수신 하고 데이터베이스 에 저 장 된 SQL 문 구 를 찾 으 며 파 라 메 터 를 연결 하고 실행 하 는 과정 은 일반 프로젝트 의 대부분 업 무...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.