DB (데이터베이스)/Oracle (오라클)
[Oracle] oracle UTL_FILE 패키지로 파일 생성하고 내용쓰기
뜽배
2024. 5. 30. 11:07
728x90
반응형
Oracle UTL_FILE패키지를 이용해서 DB에서 OS에 파일을 생성하고, 내용을 작성할 수 있다.
예시를 통해 알아보자
1. oracle directory생성
SELECT *
FROM dba_directories
을 통해서 현재 DB의 directory를 볼 수 있다. 나는 C:\test 라는 경로에 파일을 생성하고 싶기 때문에
C:\test 를 oracle directory에 등록을 해줘야 한다.
-- create directory <디렉터리명> as '<디렉터리 경로>';
CREATE directory TEST_DIR AS 'C:\test';
위와 같이 TEST_DIR이라는 oracle directory를 만들어 주었다.
위와 같이 지정이 되었다.
2. 권한부여
-- GRANT READ, WRITE ON directory test_dir TO <user명>;
GRANT READ, WRITE ON directory test_dir TO test;
test라는 user에게 test_dir디렉토리의 읽기, 쓰기 권한을 부여한다.
이렇게 권한을 부여해야 test라는 유저가 test_dir이라는 oracle directory를 사용할 수 있다.
3. 사용예시
DECLARE
v_file_handle UTL_FILE.FILE_TYPE;
BEGIN
-- 파일 생성(W) test.log
v_file_handle := UTL_FILE.FOPEN('TEST_DIR', 'test.log', 'W');
-- 파일에 write
UTL_FILE.PUT_LINE(v_file_handle, 'TEST TEST TEST');
-- 파일 닫기
UTL_FILE.FCLOSE(v_file_handle);
-- 파일에 내용 추가
v_file_handle := UTL_FILE.FOPEN('TEST_DIR', 'test.log', 'A');
-- 파일에 write
UTL_FILE.PUT_LINE(v_file_handle, 'APPEND TEST');
-- 파일 닫기
UTL_FILE.FCLOSE(v_file_handle);
EXCEPTION
WHEN OTHERS THEN
-- ERROR
DBMS_OUTPUT.PUT_LINE('SQL ERROR CODE : ' || SQLCODE);
DBMS_OUTPUT.PUT_LINE('SQL ERROR MESSAGE : ' || SQLERRM);
DBMS_OUTPUT.PUT_LINE(SQLERRM(SQLCODE));
END
;
위의 pl/sql을 통해 UTL_FILE 패키지의 '파일 생성'(w), '파일 내용 추가'(a)예시를 알아보았다.
위는 실제 결과물이다.
이렇게 UTL_FILE 패키지를 통한 간단한 파일 작성예시를 알아보았다.
728x90
반응형