[Oracle] External Table
Database 2008/05/06 21:40
오라클 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 파일을 이곳에 위치시킨다.
일단 첫번째 준비 끝.
빨간글자 부분만 주의깊게 보면 된다. 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해주는게 바람직하다.
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
(
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해주는게 바람직하다.
'Database' 카테고리의 다른 글
| [Oracle] 통계(static) 생성 (0) | 2008/12/16 |
|---|---|
| [Oracle] Shell에서 SqlLoader 사용 (0) | 2008/11/04 |
| [Mysql] 프로세스 목록 보기 (0) | 2008/06/01 |
| [Oracle] External Table (0) | 2008/05/06 |
| [MySql] Load Data infile - 파일을 읽어서 테이블에 insert (0) | 2007/07/27 |
| [Mysql] 실행 계획 보기 (2) | 2007/05/29 |
| [Oracle] Oracle 예약어 (0) | 2007/02/27 |
| [MySql] MySql 예약어 (0) | 2007/02/27 |
| [MYSQL] Table에 Lock 사용하기 (2) | 2006/11/13 |
| [Mysql] 테이블 생성 및 전체내용 복사 (2) | 2006/06/15 |
| [Mysql] 테이블 생성쿼리 확인 (0) | 2006/06/15 |

이올린에 북마크하기
이올린에 추천하기


