-- Oracle Directory 로 만들 경로 결정 혹은 생성
-- Oracle Directory 생성
CREATE OR REPLACE DIRECTORY <oracle directory name> AS '<path>';
GRANT READ, WRITE ON DIRECTORY <oracle directory name> TO <account>;
-- External Table 생성
CREATE TABLE et_ora_ext_t (
col1 varchar(10)
.
.
.
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER -- 생성 방식 지정 (ORACLE_LOADER / ORACLE_DATAPUMP)
DEFAULT DIRECTORY <directory>
ACCESS PARAMETERS
( records delimited by newline
badfile D_ORA_EXT_TXT:'et_ora_ext_t.bad'
logfile D_ORA_EXT_TXT:'et_ora_ext_t.log'
fields terminated by ',' -- 컬럼 구분자로 사용할 문자
missing field values are null -- 데이터가 없으면 null 로 입력
)
LOCATION (D_ORA_EXT_TXT:'et_ora_ext_t.txt') -- <oracle directory name> 내의 데이터 파일이름.
)
REJECT LIMIT UNLIMITED
PARALLEL -- 병렬처리 여부 (PARALLEL | NOPARALLEL)
;
SELECT * FROM et_ora_ext_t;
--ALTER EXTERNAL TABLE
ALTER TABLE et_ora_ext_t REJECT LIMIT 100;
ALTER TABLE et_ora_ext_t PROJECT COLUMN REFERNCED;
ALTER TABLE et_ora_ext_t PROJECT COLUMN ALL;
ALTER TABLE et_ora_ext_t DEFAULT DIRECTORY admin_dat2_dir;
ALTER TABLE et_ora_ext_t ACCESS PARAMETERS (FIELDS TERMINATED BY ';');
ALTER TABLE et_ora_ext_t LOCATION('et_ora_ext_t2.txt', 'et_ora_ext_t3.txt');
-- PARALLEL, ADD COLUMN, MODIFY COLUMN, DROP COLUMN, RENAME TO 는 일반 테이블변경방식과 동일함.
-- 일반 테이블을 삭제하는 것과 같지만, DB 외부의 실제 데이터는 삭제되지 않고, DB 내의 metadata 만 삭제된다.
-- DROP EXTERNAL TABLE
DROP TABLE admin_ext_employees;