본문 바로가기

IT이야기/DB

[oracle] TOAD에서 SQL LOADER 사용하기

14만건 정도의 데이터를 테이블에 적재할 일이 생겼다. 

데이터는 엑셀로 되있었는데 토드에서 엑셀Import를 하니 응답없음이 나왔다.. 컴퓨터가 꼬라서 그런가..

그래서 사용한 SQL Loader~~

내가 작업한 내용을 상세하게 적었으니 추후에 나 또는 여러분에게 도움이 되었으면.. 


일단 엑셀파일을 csv파일로 새로 저장한다.  (이슈: csv파일은 구분자가 ,로 되있는데 컬럼중 내용에 ,가 들어가있으면 오류가 날수있으니 구분자를 다른걸로 바꿔서 저장한다. 바꾸는 방법은 제어판 > 국가 및 언어 > 추가설정 에서 목록 구분 기호를 ,에서 원하는 문자로 적용한뒤 csv파일 저장. )


준비 : 설계된 테이블, control.ctl(컨트롤 파일), 데이터파일(csv나 txt파일 등)


컨트롤 파일 작성법

control.ctl


OPTIONS(LOAD=-1, ERRORS=-1)                

LOAD DATA

INFILE 'data.csv'

REPLACE

INTO TABLE TB_EXAMPLE

FIELDS TERMINATED BY "|"

TRAILING NULLCOLS

(

COLUMN1,

COLUMN2,

COLUMN3)    


설명

LOAD=-1         //로드하는 레코드 수. -1의 경우 ALL (default)

ERRORS          //허용하는 에러의 수. -1의 경우 ALL (default는 50)

LOAD DATA     //데이터를 로드

INFILE '파일명.csv'    //다수의 파일을 등록할 수 있음. 적재할 데이터가 컨트롤파일 안에 있으면 INFILE * 하고 BEGINDATA 아래에 데이터 명시

REPLACE        //테이블의 모든 내용을 삭제하고 새롭게 데이터를 로드한다.

INTO TABLE    //데이터를 적재할 테이블

FIELDS TERMINATED BY "|"    //데이터를 구분하는 문자 지정. csv파일의 경우 ,로 구분하지만 컬럼내용에 ,가 포함되어 있어서 구분자를 |로 변경함.

TRAILING NULLCOLS        //NULL 허용

( ) 적재할 컬럼을 데이터파일의 컬럼 순서대로 지정.

예를들어 

(

COL_NAME,

COL_PHONE,

COL_AGE) 

이면 데이터(data.csv or data.txt)는

홍길동|0101234****|27

유가나|0104567****|28

이런식으로..  되있어야함 (데이터순서와 컬럼명순서가 일치)

 


준비는 끝났다. 이제 토드에서 실행해보자!


** Toad for Oracle 메뉴 Database > Import > SQL*Loader Wizard


Use control file에 체크 후 Next >

Control file 을 선택하면 로그파일이 자동 생성된다.  Next >

Execute now에 체크 후 Finish 하면 

진행상황이 나타나며 insert가 된다. 


14만건의 데이터가 1분도 안걸리고 성공적으로 insert 되었다 ^0^