SQL Loader

- SQL LOADER 는 다른 응용프로그램에 저장되어 있는 대량의 데이터를 오라클로 이전할 때 사용되는 유틸리티

 

- 확인사항

1) NLS_LANG 환경변수 확인

2) ORACLE_HOME 환경변수 확인

3) LD_LIBRARY_PATH 환경변수 확인

4) ORA_NLS33 혹은 ORA_NLS10 환경변수 확인

-> ORA_NLSxx 환경변수는 Character set 을 저장하고 있는 .nlb 파일의 위치를 지정하는 변수

- oracle 7 Ver

->ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data

- Oracle 9 Ver

->ORA_NLS33 = $ORACLE_HOME/ocommon/nls/admin/data

->ORA_NLS10 = $ORACLE_HOME/nls/data

- Oracle 8,8i,9 Ver

->ORA_NLS33 = $ORACLE_HOME/ocommon/nls/admin/data

- Oracle 10g 이상

->ORA_NLS10=$ORACLE_HOME/nls/data

 

<SQL Loader>

 

- SQL Loader 의 특징

1. 입력 파일은 여러 개 가질 수 있다

2. 입력 파일의 여러 개의 레코드를 입력 시 하나의 논리적 레코드로 가공하여 한꺼번에 입력이 가능

3. 입력 필드가 고정길이나 가변길이로 가능

4. 입력 데이터가 문자, Binary, 날짜, packed 10진 데이터, zone 10진 데이터 등의 여러 가지 형태가 가능

5. 하나의 입력 데이터로 여러 테이블에 동시 입력이 가능

6. 테이블의 기존 데이터를 변경하거나 지우고 다시 입력하거나 추가 하는 등의 작업도 가능

7. SQL 함수를 사용하여 입력 가능

8. Sequence 를 사용하여 데이터를 순차적으로 입력 가능

 

 

 

$sqlldr (옵션 확인)

- 위 옵션에서 errors 옵션을 변경 후 작업

- Default 50 개에서 이상으로 변경 후 작업하는 것을 권장

- 만약 50개의 error 가 발생하면 더 이상 진행이 되지 않으므로 큰 용량의 데이터를 입력할 경우 충분하게 설정하는 것을 권장

EX 1> 입력할 데이터가 외부 프로그램 자료일 경우

- 위의 엑셀 파일을 csv(쉼표로 구분) 파일로 저장 (dept2.csv)

- dept2.csv 를 오라클 홈 으로 옮김.

- 입력할 테이블 dept2 를 생성

- SQL Loader 의 control file 을 생성

load data

infile "/home/oracle/dept2.csv"

into table dept2

fields terminated by ','

(deptno,dname,loc)

 

- 다음과 같이 실행

- 결과 확인

 

- 작업을 수행하면 Control file 과 같은 이름으로 확장자만 .log 로 작업 내용이 기록됨

 

EX 2> 입력 데이터가 control file 내부에 있을 경우

load data

infile *

replace

into table dept20

fields terminated by ',' optionally enclosed by '"'

(deptno,dname,loc)

begindata

12,"서울점","강남구"

22,"대전점","유성구"

33,"제주점","서귀포시"

41,"서울본사","서울"    

 

다음과 같이 dept2_02.ctl 파일을 생성 합니다.

load data

infile * ß 입력 데이터가 control file 내부에 있을 경우

Append ß 기존 내용 뒤에 신규 내용이 추가

into table dept20

fields terminated by ',' optionally enclosed by '"' ß 한글이"" 로 묶여 있다는 뜻

(deptno,dname,loc)

Begindata ß데이터 시작 부분

12,"서울점","강남구"

22,"대전점","유성구"

33,"제주점","서귀포시"

41,"서울본사","서울"

EX 3> 각종 파일 사용하기 (Bad file, discard file)

SQL>alter table dept2

2 modify deptno number(2);

- 오류 발생을 위해 다음과 같이 수정

- Data 확인

- 다음과 같이 수행

 

- 300,"제주점","서귀포시" 데이터가 누락됨

 

- dept2_02.log 파일 확인

- dept2_02.bad 파일을 수정하여 다시 입력

'Oracle > Backup&Recover' 카테고리의 다른 글

Row Level Flashback  (0) 2011.10.04
백업파일이나 아카이브 로그에 문제 있을 때 복구하기  (1) 2011.10.04
DB Link 설정  (0) 2011.09.30
Clone DB && DB Link (drop table 복구)  (0) 2011.09.29
Clone DB (drop table 복구)  (0) 2011.09.29

+ Recent posts