SQL*LOADER 질문이요.. 0 1 1,626

by 신동만세 [Oracle 기초] LOADER [2011.02.23 16:27:34]



파일을 SQL*LOADER 를 통해서 DB에 저장하려고 하는데요..

몇가지 궁금한점이 있어서 질문을 드립니다.

아래와 같은 데이터 파일을 검색결과와 같이 테이블에 저장하고 싶은데 3가지 궁금한점이 있습니다.

1. 파일의 #으로 시작되는 라인은 skip하고 저장하는 방법?
2. 파일의 3번째 내용을 DB의 2번째 컬럼으로, 2번째 내용을 DB의 3번째 컬럼으로 이동하는 방법?
3. LOADER 옵션중에 replace와 truncate가 있던데 delete 또는 truncate시 commit이되서 그때 조회를 하면 결과가 나오지 않게 될수 있는지요?
   replace시 delete -> commit -> insert인지?
   truncate시 truncate -> commit -> insert인지?

-- 테이블 구조
create table test
(col1 number,
 col2 varchar(10),
 col3 varchar(10))

-- 데이타 화일
1,가,a
2,나,b
##
3,다,c
4,라,d
##
5,마,e

-- 검색결과
SQL>select * from test;

col1 col2 col3
-----------------------------
1 a 가
2 b 나
3 c 다
4 d 라
5 e 마

by 마농 [2011.02.23 19:02:22]
1. 컬럼을 숫자로 지정하시면 에러로 빠지겠죠.
- errors 를 ## 갯수 이상 지정하세요.
2. 순서만 바꾸시면 됩니다.
3. IMPORT방식
- REPLACE : 테이블의 기존행을 DELETE하고 INSERT
- TRUNCATE : 테이블의 기존 데이타를 truncate하고 INSERT
- APPEND : 기존 데이타의 다음부터 추가
- INSERT 비어있는 테이블에 넣을때 사용(최초 사용시 사용)


=== test.ctl 파일 내용 ===
LOAD DATA
INFILE ".\test.txt"
BADFILE test.bad
APPEND INTO TABLE test
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
( col1 integer external
, col3
, col2
)
=== test.ctl 파일 내용 ===

=== 실행 명령 ===
sqlldr scott/tiger control=test.ctl errors=999
=== 실행 명령 ===
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입