SQL loader사용법 - 샘플화일 첨부
sqlloader.tar
sqlloader를 사용하기 위해서는 미리 테이블이 만들어져 있어야 함.
sqlloader 화일 샘플
#!/bin/csh
if ( $#argv != 2) then
echo "Usage: $0 <DataFile> <logFileName>"
exit 1
endif
sqlldr userid=oracle/oracle control=tblmacs_tmpidrlog.ctl data=$1 log=$2.log commit_discontinued=true
data는 raw데이타 들어갈 부분, log는 생략해도 무방..., commit으로 시작하는 부분도 생략가능
실행방법
sqlloader.sh "실제데이타 화일"
ex) sqlloader.sh SWBLS1_FWEBIDR1_ID0001_T20030603000109.DAT
이런식으로 사용 가능(원격폴더 지정시)
## sqlloader.sh /bear02/macslog/20030401/SWBLS1_FWEBIDR1_ID0001_T20030401000110.DAT /bear01/brewlog/src/eshock/log/z0000
control화일 샘플
load data
INFILE *
append
into table TBLMACS_TMPIDRLOG
when RECORD_TYPE='R'
(
RECORD_TYPE position(01:01) char
,RECORD_SEQ position(02:08) char
,SVC_TYPE position(09:09) char
,CALL_NUM position(10:20) char
,CHARGE_NUM position(21:31) char
,CP_NO position(32:36) char
,CONTENTS_NO position(37:38) char
,MENU_NO position(39:40) char
,CALL_START position(41:54) char
,DURATION position(55:63) char
,PKT_CNT position(64:72) char
,PHONE_TYPE position(73:87) char
,BROWSER_VER position(88:102) char
)
position은 순서대로 1부터 1까지 자름, 그다음 2칸째부터 8칸 이후까지를 의미함.
[ SQL*Loader 사용하기 ]
1. SQL*Loader를 이용해서 Data를 넣을 파일을 Excel에서 생성한다.
- 파일을 *.csv로 저장을 한다.
(SQL*Loader를 사용하기 위해서는 ,(콤마)가 필요하다)
즉, 다음과 같은 데이타 포멧이면 된다.
10000,CEO,등록
10020,CEO CEO실,등록
150000,솔루션사업부문,등록
150010,솔루션사업부문 신프라팀,등록
150020,솔루션사업부문 기관영업팀,등록
150030,솔루션사업부문 사업지원팀,등록
150040,솔루션사업부문 CS팀,등록
2. csv 파일에는 departcode, departname, gubun 의 형식을 데이타가 들어가 있다.
Ex> departcode, departname, gubun
---------- ------------------------------
180040 경영전략부문 홍보팀
190000 재경부문
190010 재경부문 재경기획팀
190020 재경부문 재경팀
190030 재경부문 물류지원팀
200000 인재기획실
3. Data를 넣을 테이블의 명세서는 다음과 같다.
SQL> desc departinfo;
이름 널? 유형
---------- -------- ------------
ID NOT NULL NUMBER
DEPARTCODE NUMBER(6)
DEPARTNAME VARCHAR2(40)
CREATEDATE DATE
MODIFYDATE DATE
GUBUN CHAR(4)
4. 콘트롤 파일(abc.ctl) 을 하나 만들고, 다음과 같은 내용을 기록한다.
LOAD DATA
INFILE '부서코드.csv' -- 참조할 파일은 부서코드.csv
replace -- 테이블의 내용을 모두 삭제한 후에 입력
INTO TABLE departinfo -- 데이타가 들어갈 테이블 명
fields terminated by ',' -- ,(콤마)를 기준으로 구분한다.
(
id sequence(1,1), -- 1부터 1씩 증가시킨다.
departcode integer external, -- 외부의 데이타를 가져온다.
departname char(40), -- 문자열은 40
createdate sysdate, -- Load를 할 때 sysdate값을 넣어준다.
modifydate sysdate, -- Load를 할 때 sysdate값을 넣어준다.
gubun char(4) -- 문자열은 4
)
5. SQL*Loader를 실행시킨다.
# sqldlr atomx/akstp@sysora control=abc.ctl log=0611.log
- > 위와 같이 하면 부서코드.csv의 내용이 conrolfile의 정의와 함께
테이블에 쭉 들어간다.
<참조> 다른 컨트롤 파일의 내용
1. 컨트롤 파일(bbb.ctl)의 내용
LOAD DATA
INFILE '사원인사.csv'
replace
INTO TABLE companyinfo
fields terminated by ','
(
id sequence(1,1),
companycode integer external,
name char(20),
departcode integer external,
tel char(4) nullif tel = blanks, -- 만일 공백이면 NULL상태로 만든다.
enteringdate date ,
createdate sysdate,
modifydate sysdate,
gubun char(4)
)
2. sqlldr atomx/akstp@sysora control=bbb.ctl log=0611.log
* Sample )
--
-- deliLoad.ctl
-- sqlldr73 sejong/easysejong@idc34 control=deliLoad.ctl data=deli.csv
-- data csv file "68-1408-0394"
--
-- deliLoad.ctl
-- sqlldr73 sejong/easysejong@idc34 control=deliLoad.ctl data=deli.csv
-- data csv file "68-1408-0394"
--
LOAD DATA
INFILE *
APPEND INTO TABLE DELITMP
Fields terminated by ','
(
DELINO,
ORDNO
)
INFILE *
APPEND INTO TABLE DELITMP
Fields terminated by ','
(
DELINO,
ORDNO
)
댓글 없음:
댓글 쓰기