SQL Loader 사용법
출처: http://essbi.tistory.com/4?srchid=BR1http%3A%2F%2Fessbi.tistory.com%2F4
1. SQL*Loader란 ?
SQL*Loader란 외부 화일 데이터를 ORACLE 데이타베이스의 테이블에 넣기 위한 유틸리티 입니다.
2. SQL*Loader 특징
① 하나 이상의 입력 파일을 사용 할 수 있습니다.
② 로드를 위해 여러 개의 입력 레코드가 하나의 논리적 레코드로 결합될 수 있습니다.
③ 입력 필드는 고정된 길이를 가질 수도, 다양한 길이를 가질 수도 있습니다.
④ 입력 데이터는 문자, 이진, 팩 십진수(packed decimal), 날짜, 그리고 존 십진수(zoned decimal)등의
어떤 유형도 사용 할 수 있습니다.
⑤ 데이터는 디스크나 테이프, 또는 명명된 파이프 등 여러 유형의 매체로부터 로드될 수 있습니다.
⑥ 데이터는 한 번에 여러 테이블로 로드될 수 있습니다.
⑦ 데이터는 데이터베이스 버퍼 캐쉬를 거치지 않고 테이블로 직접 로드될 수 있습니다.
3. SQL*Loader의 사용
① 문법
SQLLDR [keyword=] value [ [keyword=] value ]...
- KEYWORD : 아래에 설명되는 키워드중의 하나
- VALUE : 키워드에 지정되는 값
② 예제)
SQLLDR userid=scott/tiger control='ulcase1.ctl' log='ulcase1.log' direct=true
③ 키워드
키워드 |
설 명 |
USERID |
오라클 사용자 이름과 암호를 지정 합니다. |
CONTROL |
콘트롤 파일 이름, SQL*Loader을 수행하기 위해서는 항상 지정해 주어야 |
LOG |
로그 파일 이름을 지정 합니다. (기본 이름은 controlfile.log) |
BAD |
거부된 레코드 모두를 저장하는 배드 파일 이름을 지정 합니다. |
DATA |
입력 데이터 파일 이름을 지정 합니다. |
DISCARD |
Load시 선택되지 않은 레코드가 저장되는 디스카드 파일(선택 사항) |
DISCARDMAX |
버림(discard)의 최대 허용 갯수를 지정 합니다. |
ERRORS |
허용하는 배드 레코드의 최대 수를 지정 합니다. |
DIRECT |
TRUE로 설정되면 SQL*Loader는 DIRECT PATH를 사용. |
PARFILE |
추가 파라미터 파일을 지정 합니다. |
PARALLEL |
DIRECT 로드에서만 적합한 이 파라미터는 다중 병렬 DIRECT로드가 |
FILE |
병렬 DIRECT로드의 경우 임시 세그먼트가 생성될 파일을 지정 합니다. |
훗..자료를 긁으니 HTML 태그까지 다 나오는군요...음..기특한 태터...^^;
암튼 내용으로 보아..내가 하고자 하는 업무에 정말 적합한 내장 유틸인듯하다..
어떠것도 업로드가 가능하다고 한다... 그럼 예제를 봐야지...
아래는 오라클클럽 에서 가져온 예시이다.. 제어파일이 있을때와 없을때를 구분해 놨다..
연습용 테이블 생성 |
제어파일에 데이터가 들어가 있는 경우 - DEPT_TEST 테이블에 insert하는 예제 입니다. - 각 데이터의 레코드의 필드를 ','로 구분을 했습니다 ============== dept_test.ctl 시작 ============== LOAD DATA INFILE * INTO TABLE DEPT_TEST FIELDS TERMINATED BY ',' (DEPTNO, DNAME, LOC) BEGINDATA -- 데이터 시작을 알림 12,RESEARCH,SARATOGA 10,ACCOUNTING,CLEVELAND 11,ART,SALEM 13,FINANCE,BOSTON 21,SALES,PHILA 22,SALES,ROCHESTER 42,"INT'L","SAN FRAN" ============== dept_test.ctl 끝 ============== - 위 부분을 dept_test.ctl파일로 저장을 합니다. - SQL*Loader을 실행 시킵니다. C:\>sqlldr userid=scott/tiger control='C:\dept_test.ctl' SQL*Loader: Release 8.1.6.0.0 - Production on 일 Dec 16 11:59:16 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved. 커밋 시점에 도달 - 논리 레코드 개수 6 커밋 시점에 도달 - 논리 레코드 개수 7 - 데이터가 INSERT 되었는지 확인 합니다. - dept_test.log파일이 생겼는지 확인해 봅니다. C:\>SQLPLUS scott/tiger SQL>SELECT * FROM dept_test; DEPTNO DNAME LOC ------- -------------- ----------- 12 RESEARCH SARATOGA 10 ACCOUNTING CLEVELAND 11 ART SALEM 13 FINANCE BOSTON 21 SALES PHILA 22 SALES ROCHESTER 42 "INT'L" "SAN FRAN" |
제어파일과 데이터 파일이 분리된 경우 - Control File 부분은 dept.ctl로 저장 합니다. - Data File 부분은 dept.dat로 저장을 합니다. ------------ dept.ctl 시작 ------------ LOAD DATA INFILE 'dept.dat' -- Data File을 지정 합니다. APPEND -- 기존에 데이터에 새로운 데이터를 추가 합니다. INTO TABLE DEPT_TEST FIELDS TERMINATED BY ',' (DEPTNO, DNAME, LOC) ------------ dept.ctl 끝 ------------ ------------ dept.dat 시작 ------------ 50,ACCOUNTING,NEW_YORK 60,RESEARCH,DALLAS 70,OPERATIONS,BOSTON ------------ dept.dat 시작 ------------ - SQL*Loader을 실행 시킵니다. C:\>sqlldr userid=scott/tiger control='C:\dept.ctl' SQL*Loader: Release 8.1.6.0.0 - Production on 일 Dec 16 12:08:26 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved. 커밋 시점에 도달 - 논리 레코드 개수 2 커밋 시점에 도달 - 논리 레코드 개수 3 - 데이터가 INSERT 되었는지 확인 합니다. - 기존에 데이터에 새로운 데이터가 추가 된 것을 확인 할 수 있습니다. SQL> SELECT * FROM dept_test; DEPTNO DNAME LOC ---------- -------------- ------------ 12 RESEARCH SARATOGA 10 ACCOUNTING CLEVELAND 11 ART SALEM 13 FINANCE BOSTON 21 SALES PHILA 22 SALES ROCHESTER 42 "INT'L" "SAN FRAN" 50 ACCOUNTING NEW_YORK 60 RESEARCH DALLAS 70 OPERATIONS BOSTON 10 개의 행이 선택되었습니다. SQL*Loader의 다른 사용법은 아래 링크를 참조해 보세용. http://www.oracle.co.kr/support/web_sup ··· _02.html |
내가 원하는 거의 모든 문법이 이 사이트에 있다...운영자 분은 김정식 님이신데...
정말 존경스러운 분이다...
위의 예제로도 모자라 마지막에 내가 원하는 해답을 적어 놓으셨다...^^
|