SQL*Loader 수행 전 확인해야 할 사항들
Oracle

오라클을 설치할 때 기본적으로 설치되는 유틸리틴데

예를들어 신규 ERP 구축 프로그램에서 기존 엑셀 데이터를 오라클DB로 입력해야 할 경우 굉장히 많은 

데이터를 일일이 수동으로 입력해야 하는데 이럴 때 쓰이는 유틸리티가 SQL*Loader 입니다.


1) SQL*Loader 수행 전 확인해야 할 사항들

a. 우선 NLS_LANG 환경변수를 먼저 체크해서 서버의 Character set과 동일하게 설정하세요.

이 환경변수는 서버에게 현재 클라이언트가 입력할 데이터 유형을 알려주는 역할을 하게 된다.

만약 이 변수가 서버의 Character set과 다를 경우 내부적으로 변환이 일어나기 때문에 속도 저하 

및 데이터가 입력되다가 에러가 발생할 수도 있게 된다.


[oracle@localhost ~]$ env | grep NLS_LANG
NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949
[oracle@localhost ~]$
b.ORACLE_HOME 환경변수를 확인하세요.
[oracle@localhost ~]$ env | grep ORACLE_HOME
ORACLE_HOME=/app/oracle/product/11g
[oracle@localhost ~]$
c.LD_LIBRARY_PATH 환경변수를 확인하세요(UNIX만 해당)
[oracle@localhost ~]$ env | grep LD_LIBRARY_PATH
LD_LIBRARY_PATH=/app/oracle/product/11g/lib:/lib:/usr/lib:/usr/local/lib
d.ORA_NLS33이나 ORA_NLS10 환경변수를 설정하세요.
[oracle@localhost ~]$ env | grep ORA_NLS33
ORA_NLS33=/app/oracle/product/11g/ocommon/nls/admin/data
[oracle@localhost ~]$
[oracle@localhost ~]$ env | grep ORA_NLS10
[oracle@localhost ~]$
ORA_NLSxx란 환경변수는 Character set을 저장하고 있는 .nlb 파일의 위치를 지정하는 변수입니다.
이는 오라클 버전마다 다르며 ORA_NLS32파라미터는 8버전이상부터 사용할 필요가 없고
ORA_NLS33파라미터는 10G 이상 버전부터 사용할 필요가 없습니다.
2) SQL*Loader의 구조



위 그림처럼 SQL*Loader는 OS에서 다른 응용프로그램에서 생성된 특정 규칙을 가진 텍스트 파일을 메모리에 거치지 않고
데이터파일로 직접 대량 입력하게 됩니다.
a. 입력 파일을 여러 개 가질 수 있다.
b. 입력 파일의 여러 개의 레코드를 입력 시 하나의 논리적 레코드로 가공하여 한꺼번에 입력이 가능하다.
c. 입력 필드가 고정길이나 가변길이로 가능합니다.
d. 입력 데이터가 문자, binary,날짜,packed 십진 데이터,zone 십진 데이터 등의 여러가지 형태가 가능합니다.
e. 하나의 입력 데이터로 여러 테이블에 동시 입력이 가능하다.
f. 테이블의 기존 데이터를 변경하거나 지우고 다시 입력하거나 추가하는 등의 작업도 가능합니다.
g. SQL 함수를 사용하여 입력 가능합니다.
h. Sequence를 사용하여 데이터를 순차적으로 입력할 수 있습니다.

3)SQL*Loader를 구성하는 주요 파일들 



위 그림에서 보는것과 같이 SQL*Loader에는 2개의 "입력 관련 파일과" 3개의 "출력 관련 파일"을 사용할 수 있습니다.
아래에서 각각의 파일에 대해서 자세히 살펴보겠습니다.


*Control File*
이 파일은 Oracle을 운영하기 위해 사용하는 conrol file이 아니라 SQL*Loader를 사용하기 위한 정보를 가진 control file입니다.
피 파일 안에 SL*Loader를 실행시키기 위한 각종 정보가 들어 있으며 확장자는 ctl로 합니다. 자세한건 아래와 같습니다.

--sample control file--

LOAD DATA : 새로운 데이터 입력이 시작됨을 의미합니다.
만약 작업이 중단 되었다가 다시 시작해야 할 경우 CONTINUE LOAD DATA 문장을 사용합니다.
INFILE* : 입력하고자 하는 데이터파일이 외부에 있을 경우에는 * 대신 파일이름을 적어주면 되고
CONTROL FILE 내부에 데이터가 있을 경우 *를 사용합니다.
DISCARDFILE "DISFILE.DSC' : 폐기된 파일 목록을 저장할 파일 WHERE 절의 조건에 해당하지 않아 폐기되는 파일을 기록함
필요할 경우만 생성하며 내용을 수정해서 다시 사용 가능합니다.
RELACE : 테이블의 기존 행을 모두 삭제(DELETE)한 후 다시 입력하라는 의미
INSERT : 내용이 없는 테이블에 신규 데이터를 입력할 경우 사용합니다.
TRUNCATE : 기본 내용을 모두 TRUNCATE한 후 다시 입력 하라는 의미
APPEND : 기존 내용 아래에 신규 내용을 추가하라는 의미
INTO TABLE STEST : 데이터를 입력할 테이블명을 적어줍니다.
WHEN : 입력하고자 하는 조건이 있을 경우 이곳에 적어줍니다.
FIELDS TERMINATED BY ',' : 각 필드의 구분 기호를 이곳에 적어줍니다.
OPTIONALLT ENCLOSED BY ',' : (A,B,C...) < 데이터가 있을 경우 칼럼 이름을 적어줍니다.
BEGINDATA : A,B,C ... > 실제 데이터를 적어줍니다.

위에서 본 여러가지 옵션들을 활용해서 SQL*Loader 실습을 해보겠습니다.


'Oracle' 카테고리의 다른 글

SQL* Loader로 외부 데이터 입력하기  (0) 2014.11.10
윈도우 Client로 Oracle Server 접속하기  (0) 2014.11.04
toad for oracle 설치 및 세팅  (0) 2014.11.04
OEL5 + Oracle 11g rac rawdevice  (0) 2014.09.28
oracld 11g rac asm  (0) 2014.09.26