UTL_FILE 헤메었다.. 알고 보면쉽다..
UTL_FILE 쓰려면 일단 오라클내에 읽고,쓰고 할 디렉토리 경로를 미리 집아주고..
권한을 줘야한다..
CREATE DIRECTORY recv_area1 AS 'D:\temp';
CREATE DIRECTORY send_area1 AS 'D:\temp';
SELECT * FROM ALL_DIRECTORIES ;
경로 잡아주고..
GRANT READ ON DIRECTORY recv_area1 TO mdmuser ;
GRANT WRITE ON DIRECTORY send_area1 TO mdmuser ;
권한주고..
CREATE OR REPLACE PROCEDURE CREATE_DIR_WRITE_SAMPLE
AS
vHandle UTL_FILE.FILE_TYPE;
vDirname VARCHAR2(250);
vFilename VARCHAR2(250);
vOutput VARCHAR2(32767);
BEGIN
vDirname := 'SEND_AREA1'; -- (주)디렉토리 오브젝트명을 대문자로 지정한다
vFilename := 'test.txt';
vHandle := UTL_FILE.FOPEN(vDirname ,vFilename,'w', 32767);
vOutput := 'CREATE DIRECTORY 경유로의 파일출력';
UTL_FILE.PUT_LINE(vHandle, vOutput);
UTL_FILE.FCLOSE(vHandle);
EXCEPTION WHEN OTHERS THEN
UTL_FILE.FCLOSE_ALL;
RAISE;
END;
파일쓰기.. (퍼왔음..)
http://blog.naver.com/hirokorea?Redirect=Log&logNo=20024002616
CREATE OR REPLACE PROCEDURE CREATE_DIR_READ_SAMPLE
AS
vHandle UTL_FILE.FILE_TYPE;
vDirname VARCHAR2(250);
vFilename VARCHAR2(250);
vInput VARCHAR2(32767);
BEGIN
vDirname := 'RECV_AREA1';
vFilename := 'test.txt';
vHandle := UTL_FILE.FOPEN(vDirname ,vFilename,'r', 32767);
BEGIN
LOOP
UTL_FILE.GET_LINE(vHandle, vInput,32767);
DBMS_OUTPUT.PUT_LINE(vInput);
END LOOP;
EXCEPTION WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('파일의 마지막');
END;
UTL_FILE.FCLOSE(vHandle);
EXCEPTION WHEN OTHERS THEN
UTL_FILE.FCLOSE_ALL; RAISE;
END;
파일 읽고... 쉽다.. 끗..
예제...
V_FILENAME := 'LV_CARD_CD_'||V_YYMMDD||'.sam';
FHANDLER := UTL_FILE.FOPEN('DIR_SAM', V_FILENAME, 'R');
IF UTL_FILE.IS_OPEN(FHANDLER) THEN
LOOP
BEGIN
UTL_FILE.GET_LINE(FHANDLER, V_LINE);
IF V_LINE IS NULL THEN
EXIT;
END IF;
VAL.CARD_CD := TRIM(REGEXP_SUBSTR(V_LINE, '[^|]+', 1, 1));
VAL.CARD_CD_NM := TRIM(CONVERT(REGEXP_SUBSTR(V_LINE, '[^|]+', 1, 2),'UTF8','KO16MSWIN949'));
INSERT /*+ APPEND PARALLEL(LV_CARD_CD 16) */ INTO A
( CARD_CD,CARD_CD_NM )
VALUES
(VAL.CARD_CD,VAL.CARD_CD_NM )
;
V_I := V_I + 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
END IF;
UTL_FILE.FCLOSE(FHANDLER);
퍼옴..
[출처] oracle UTL_FILE 쓰는 방법..|작성자 너는매운면
'닷컴's_열공 > Database' 카테고리의 다른 글
오라클 encode , decode (0) | 2012.05.23 |
---|---|
오라클 정보보기 view (0) | 2012.05.08 |
Database size / tablespace 확인 (0) | 2012.04.30 |
오라클 JOB (0) | 2012.04.20 |
PL/SQL 블록 예제 (0) | 2012.04.20 |