본문 바로가기

IT 이야기/데이터베이스

Oracle loader

 Oracle Loader (SQLLDR.exe)(오라클 설치하면 포함되어있는 툴) 을 이용한 외부데이터를 SQL로 가져오기.

 

 연습에 사용한 파일 두개 : test.ctl   test.dat 

 

testdat.jpg 

  •  메모장에 이렇게 써서 저장합니다. (xml 데이터를 파싱한 예라고 가정합시다!)

 

norecord.jpg 

  •  그리고 SQL에서 테이블을 만듭니다.

 testctl.jpg

  •  그다음 ctl 파일을 이렇게 작성하여 줍니다.

 terminal.jpg

 

  •  그다음 커맨드 창에서 위와 같이 입력해준 후, 엔터를 치면 커밋 시점에 도달 이라는 메세지를 볼수 있습니다.

    (경로 지정을 잘 해야해요.)


select.jpg

  •  그러면 다음과 같이 자료가 들어간 것을 알수 있습니다.

 

참고 사항 : http://blog.naver.com/lovepilia1?Redirect=Log&logNo=140110103098


 

 

 

ORACLE 로부터 데이타 가져오기/내보내기
** oracle loader (External Table로부터 데이타 읽음)
** 오라클 로더 위치 ==> C:\oracle\ora92\bin\SQLLDR.EXE

[방법 1]
---------------------c:\sqlloader1.ctl 에 저장함------------------------
load data
infile *
into table depart_test
fields terminated by ',' -------->컬럼의 구분은 컴마
optionally enclosed by ' " ' -----> 만약 컴마가 데이타라면 그 안에 " " 를 쳐라
(did, dname, last_updated date 'yyyy-mm-dd')
begindata ------------------------------------> 공 테이블이여야 한다.

10,전산학과,2001-01-05
11,기계 공학과,2000-07-05
12,"식품,공학과",1999-03-02
13,경영학과,2001-03-05
------------------------------------------------------------------------


실행::::::::---->
sqlldr userid=scott/tiger control=c:\sqlloader1.ctl log=c:\sqlloader1.log



[방법 2]
---------------------c:\student1.dat 에 저장함------------------------
홍길동, 전산학과
김유신, 기계공학과
이순신, 식품공학과
유관순, 경영 학과
----------------------------------------------------------------------

INSERT--> 비어있는 테이블에 데이터를 넣을때
REPLACE --> 기존 데이터를 모두 DELETE한 이후에 INSERT 할 경우
TRUNCATE--> 기존 데이터를 모두 TRUNCATE한 이후에 INSERT할 경우
APPEND --> 새로운 행을 기존의 데이타에 추가할 경우

---------------------c:\sqlloader2.ctl 에 저장함------------------------
load data
infile 'c:\student1.dat'
insert into table student
fields terminated by ','
(hakbun sequence(101,1) ------------------>identity와 비슷한 기능
, name char
, depart char)

------------------------------------------------------------------------



student1.dat
실행::::::::---->
sqlldr userid=scott/tiger control=c:\sqlloader2.ctl log=c:\sqlloader2.log


[방법 3]
---------------------c:\student2.dat 에 저장함------------------------
1,박찬호,전자공학과
2,김병현,
3,이동국,경영학과
4,박지은,
----------------------------------------------------------------------


---------------------c:\sqlloader3.ctl 에 저장함------------------------
load data
infile 'c:\student2.dat'
replace into table student
fields terminated by ','
trailing nullcols -----------------> 맨 마지막에 들어오는 데이타는 null 허용
(hakbun integer external ---------> 숫자는 이렇게 (외부에서 끌어오니까)
, name char
, depart char)
------------------------------------------------------------------------

[방법 4]
---------------------c:\student2.dat 에 저장함---------------------------
1,박찬호,전자공학과
2,김병현,,
3,이동국,경영학과
4,박지은,, ---------------------> null값은 , 찍어줘
-------------------------------------------------------------------------

---------------------c:\sqlloader4.ctl 에 저장함---------------------------
load data
infile 'c:\student2.dat'
replace into table student
fields terminated by ','
(hakbun integer external
,name char
,depart "nvl(:depart,'미지정')" ---> depart라는 컬럼이 null이면 '미지정' 찍어라
) ---> :컬럼명 (구조)
--------------------------------------------------------------------------

[방법 5]
---------------------c:\student3.dat 에 저장함---------------------------
1,SEO Yh,Computer
2,Kim YS,electronic
3,lee ss,FOOD
-------------------------------------------------------------------------

---------------------c:\sqlloader5.ctl 에 저장함---------------------------
load data
infile 'c:\student3.dat'
replace into table student
fields terminated by ','
(hakbun integer external
, name char "lower(:name)" --------------> name 컬럼 문자를 소문자로
, depart char "upper(:depart)" -------------->upper 컬럼 문자를 대문자로
)
--------------------------------------------------------------------------

[방법 6] --case문
---------------------c:\student4.dat 에 저장함---------------------------
1,김유신,,8210101234567,,
2,엄정화,,7910102234567,,
3,남자애,,0010103234567,,
4,여자애,,0210104234567,,
-------------------------------------------------------------------------

---------------------c:\sqlloader6.ctl 에 저장함---------------------------
load data
infile 'c:\student4.dat'
insert into table newstudent
fields terminated by ','
(hakbun char
, name char
, ibhakday char "to_char(sysdate,'yyyy-mm-dd')"
, jubun char
, sex "case substr(:jubun,7,1) when '1' then '남'
when '3' then '남'
else '여'
end"
)
--------------------------------------------------------------------------



[방법 7] --csv를 가져오기
---------------------c:\woo.csv 에 저장함-------------------------------
경기,가평군,가평읍,가평군청,,,,477701,477800
경기,가평군,가평읍,가평경찰서,,,,477702,477800
경기,가평군,가평읍,가평교육청,,,,477703,477800
경기,가평군,가평읍,가평군법원,,,,477704,477800
-------------------------------------------------------------------------

---------------------c:\sqlloader7.ctl 에 저장함---------------------------
load data
infile 'c:\woo.csv'
replace into table mailnum
fields terminated by ','
(sido char ------------------------>varchar는 없다 무조건 char로 한다.
, gugun char
, dongup char
, sparea char
, sum char
, firstbun char
, lastbun char
, oldup char
, newup char
)
--------------------------------------------------------------------------

 

 

 

이 글은 스프링노트에서 작성되었습니다.

'IT 이야기 > 데이터베이스' 카테고리의 다른 글

Project 소개  (0) 2011.01.12
Oracle Text  (0) 2011.01.12
10g EE 설치  (0) 2011.01.12
JSP 기본구조  (0) 2011.01.12
JSP 구성과 흐름도  (0) 2011.01.12