독도 광고 모금 캠페인

[Oracle] External Table

오라클 External 테이블 사용에 대한 예제
External 테이블은 파일데이터를 특정한 경로에 위치시켜놓고 SELECT 할 수 있는 테이블

샘플데이터 (sample.txt)
--------------------------------------------------------
홍길동^천재^2008/01/01 18:35:20
구마적^건달^2008/01/04 22:05:15
--------------------------------------------------------

Oracle에서 디렉토리 설정을 해서 dir_external로 Alias를 지정한다.
DB서버의 /home/test/ 를 dir_external로 지정했다면 sample.txt 파일을 이곳에 위치시킨다.

일단 첫번째 준비 끝.


CREATE TABLE ext_table
(
    username VARCHAR(20),
    memo VARCHAR2(200),
    reg_date DATE,
)
ORGANIZATION EXTERNAL
(
    TYPE ORACLE_LOADER
    DEFAULT DIRECTORY dir_external
    ACCESS PARAMETERS
    (
        records delimited by newline
        badfile dir_external:'sample.bad'
        logfile dir_external:'sample.log'
        fields terminated by '^'
        missing field values are null
        (
                    username,
                    memo,
                    reg_date CHAR date_format DATE mask "YYYY/MM/DD HH24:MI:SS"
        )
    )
    LOCATION ('sample.txt')
)
REJECT LIMIT UNLIMITED

빨간글자 부분만 주의깊게 보면 된다. mysql load data infile을 해보셨으면 바로 이해가 가능할겁니다.
ext_table은 생성될 테이블 명, dir_external을 서버내 디렉토리 경로를 가르키고, bad나 log파일은 bad가 생겼을 경우 생기는 로그파일이다. 날짜의 경우 해당 파일에 저장되어 있는 날짜 포맷으로 mask 해주어야 한다.

위의 External 생성을 실행한 후 해당 테이블을 SELECT 해본다.
그러면 bad가 있을경우 bad가 발생하게된 데이터파일이 생성되고, log파일도 생성되므로 서버의 파일을 확인해본다.


주의.
External 테이블은 파일내용을 그대로 읽는 것이기 때문에 UPDATE, INSERT, DELETE가 되지 않는다. INDEX도 걸릴수가 없다.
따라서 생성후에 데이터를 다시 똑같은 구조의 테이블을 생성해서 INSERT INTO SELECT해주는게 바람직하다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0

Trackback : http://deuxism.tistory.com/trackback/2694652 관련글 쓰기

prev 1 ... 5 6 7 8 9 10 11 12 13 ... 233 next