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
반응형