EXTERNAL TABLE(외부테이블)을 이용하여 외부파일(cvs ,txt, dat) 읽어오기 및 오류처리..
-일단 읽어올 파일이 DB 의 D:\DATA 폴더에 있다고 가정. 리눅스의 경우 /user/data 라고 가정해도 됨.
-읽어올 파일은 파이프(|)로 구분되어진 txt파일이라고 가정. data.txt
-파일내용이 아래와 같다고 가정하고.
col1|col2|col3|col4
a1|a2|a3|a4
b1|b2|b3|b4
외부파일을 만든다.
CREATE TABLE CWICT.EXT_TEST
(
COL1 VARCHAR(200),
COL2 VARCHAR(200),
COL3 VARCHAR(200),
COL4 VARCHAR(200)
)
ORGANIZATION EXTERNAL(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY CW_DATA_FILE_DIR /**CW_DATA_FILE_DIR 은 디렉토리**/
ACCESS PARAMETERS(
RECORDS DELIMITED BY NEWLINE /**줄의 구분자**/
FIELDS TERMINATED BY '|' /**데이터의 구분자**/
)
LOCATION ('data.txt' )
)
*디렉토리 및 경로어쩌구 저쩌구 에러 발생시 처리
-DEFAULT DIRECTORY의 경우 일반 USER면 생성할 권한이 없음.
1. DBA 권한으로 접속.
2. 디렉토리 생성 -> CREATE OR REPLACE DIRECTORY CW_DATA_FILE_DIR_1 AS 'D:/DATA';
*아래같은 오류
ORA-29913: ODCIEXTTABLEFETCH 콜아웃 실행 시 오류
ORA-29400: 데이터 카트리지 오류
KUP-04020: found record longer than buffer size supported, 524288, in D:\DATA\data.txt
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
RECORDS DELIMITED BY NEWLINE -> RECORDS DELIMITED BY '\n' 이렇게 변경.
*아래같은 오류
ORA-29913: ODCIEXTTABLEFETCH 콜아웃 실행 시 오류
ORA-30653: 거부 제한 도달
ORA-30653: reject limit reached
ORGANIZATION EXTERNAL(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY CW_DATA_FILE_DIR /**CW_DATA_FILE_DIR 은 디렉토리**/
ACCESS PARAMETERS(
RECORDS DELIMITED BY NEWLINE /**줄의 구분자**/
FIELDS TERMINATED BY '|' /**데이터의 구분자**/
)
LOCATION ('data.txt' )
)
REJECT LIMIT UNLIMITED; <-이거 붙여줌.
'DataBase > Oracle' 카테고리의 다른 글
오라클 정규식을 이용한 특수문자 제거 (0) | 2015.10.06 |
---|---|
windows 에 오라클10g 설치시 에러 (운영 체제 버전 확인 중:필수 버전 5.0, 5.1... 실제 6.1 실패함) (6) | 2011.10.25 |
ORA-28232: obfuscation 툴킷에 부적합한 입력 길이입니다. 암호화 복호화 안될때... (0) | 2011.04.29 |
오라클 데이터 베이스 백업 및 복구-ArcSDE (공간정보)를 포함한 백업 및 복구 (0) | 2010.04.22 |
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다. (0) | 2009.12.04 |