/********************************************************************************************
-- Title : [10g] 외부 테이블 생성 및 읽기/디렉토리 생성
-- Reference : 00패션 박0훈, blog.naver.com/noendrun
-- Key word : oracle directory external table 디렉토리 OS file 외부테이블 외부 테이블
********************************************************************************************/
/**********************************************
-- 예제1) 한 행을 하나의 필드로 저장
**********************************************/
-- 디렉토리 생성
CREATE OR REPLACE DIRECTORY disk_usage_dir as '/oracle';
-- 테이블 생성
-- Title : [10g] 외부 테이블 생성 및 읽기/디렉토리 생성
-- Reference : 00패션 박0훈, blog.naver.com/noendrun
-- Key word : oracle directory external table 디렉토리 OS file 외부테이블 외부 테이블
********************************************************************************************/
/**********************************************
-- 예제1) 한 행을 하나의 필드로 저장
**********************************************/
-- 디렉토리 생성
CREATE OR REPLACE DIRECTORY disk_usage_dir as '/oracle';
-- 테이블 생성
DROP TABLE JOB_Disk_Usage;
CREATE TABLE JOB_Disk_Usage
(
cntnt VARCHAR2(4000)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY disk_usage_dir
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
FIELDS
REJECT ROWS WITH ALL NULL FIELDS
)
LOCATION ('disk_usage.txt')
)
REJECT LIMIT UNLIMITED;
CREATE TABLE JOB_Disk_Usage
(
cntnt VARCHAR2(4000)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY disk_usage_dir
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
FIELDS
REJECT ROWS WITH ALL NULL FIELDS
)
LOCATION ('disk_usage.txt')
)
REJECT LIMIT UNLIMITED;
-- 읽기 확인
SELECT * FROM job_disk_usage;
/**********************************************
-- 예제1) 한 행을 크기별로 구분하여 필드로 저장
**********************************************/
CREATE TABLE test
( AAA VARCHAR2(2)
, BBB VARCHAR2(8)
, CCC VARCHAR2(2)
, DDD VARCHAR2(4)
, EEE VARCHAR2(512)
)
ORGANIZATION EXTERNAL
(
SELECT * FROM job_disk_usage;
/**********************************************
-- 예제1) 한 행을 크기별로 구분하여 필드로 저장
**********************************************/
CREATE TABLE test
( AAA VARCHAR2(2)
, BBB VARCHAR2(8)
, CCC VARCHAR2(2)
, DDD VARCHAR2(4)
, EEE VARCHAR2(512)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY disk_usage_dir -- 오라클 디렉토리명
ACCESS PARAMETERS -- 어떻게 참조할 것인지 정의
(
RECORD DELIMITED BY NEWLINE -- 한 라인이 한 레코드를 사용할 것으로 정의
FIELDS(
AAA CHAR(2), -- 1~2열을 지정
BBB CHAR(8),
CCC CHAR(2),
DDD CHAR(4),
EEE POSITION(1:512) CHAR(512) -- 1:512를 지정
)
)
LOCATION(disk_usage_dir:'/disk_usage.txt')
)
REJECT LIMIT UNLIMITED
NOPARALLEL
NOMONITORING;
/**********************************************
-- 예제2) 콤마(,)로 구분된 텍스트 각 필드로 저장
**********************************************/
-- 파일 샘플
$ cat test.txt
0111,"COREA",
0222,"CHINA",
-- 테이블 생성
create table test_ext (
aa number(4),
bb char(5))
ORGANIZATION EXTERNAL ☜ external table 생성을 의미
(type oracle_loader ☜ SQL*Loader를 사용하여 데이터를 load함
default directory test_dir ☜ 미리 생성한 directory object를 기술
access parameters ( ☜ access driver의 변수값 지정
records delimited by newline ☜ 줄바꿈으로 record를 구분
badfile 'test_bad.bad' ☜ loading되지 못한 record를 저장할 file
logfile 'test_log.log' ☜ log 기록을 저장하는 file
fields terminated by ',' optionally enclosed by '"' ☜컬럼 구분시 컴마(,) 사용
(aa, bb))
location('test.txt')) ☜ 읽어올 외부 파일의 이름
reject limit unlimited; ☜ bad file에 저장되는 unload되는 record 제한
DEFAULT DIRECTORY disk_usage_dir -- 오라클 디렉토리명
ACCESS PARAMETERS -- 어떻게 참조할 것인지 정의
(
RECORD DELIMITED BY NEWLINE -- 한 라인이 한 레코드를 사용할 것으로 정의
FIELDS(
AAA CHAR(2), -- 1~2열을 지정
BBB CHAR(8),
CCC CHAR(2),
DDD CHAR(4),
EEE POSITION(1:512) CHAR(512) -- 1:512를 지정
)
)
LOCATION(disk_usage_dir:'/disk_usage.txt')
)
REJECT LIMIT UNLIMITED
NOPARALLEL
NOMONITORING;
/**********************************************
-- 예제2) 콤마(,)로 구분된 텍스트 각 필드로 저장
**********************************************/
-- 파일 샘플
$ cat test.txt
0111,"COREA",
0222,"CHINA",
-- 테이블 생성
create table test_ext (
aa number(4),
bb char(5))
ORGANIZATION EXTERNAL ☜ external table 생성을 의미
(type oracle_loader ☜ SQL*Loader를 사용하여 데이터를 load함
default directory test_dir ☜ 미리 생성한 directory object를 기술
access parameters ( ☜ access driver의 변수값 지정
records delimited by newline ☜ 줄바꿈으로 record를 구분
badfile 'test_bad.bad' ☜ loading되지 못한 record를 저장할 file
logfile 'test_log.log' ☜ log 기록을 저장하는 file
fields terminated by ',' optionally enclosed by '"' ☜컬럼 구분시 컴마(,) 사용
(aa, bb))
location('test.txt')) ☜ 읽어올 외부 파일의 이름
reject limit unlimited; ☜ bad file에 저장되는 unload되는 record 제한