UTL_FILE

개요

UTL_FILE은 OS 파일 시스템에 파일을 읽거나 쓴다.

함수 / 프로시저
반환 타입
설명

FCLOSE

UTL_FILE.FILE_TYPE

파일을 닫는 함수이다.

FCLOSE_ALL

VOID

현재 세션에 열린 모든 파일을 닫는 함수이다.

FCOPY

VOID

파일의 연속되는 부분을 새로 생성된 파일에 복사하는 함수이다.

FFLUSH

VOID

아직 파일에 쓰지 않고 버퍼에 남아 있는 데이터를 파일에 쓰는 함수이다.

FGETATTR

n/a

디스크 파일의 속성을 반환하는 함수이다.

FOPEN

UTL_FILE.FILE_TYPE

파일을 여는 함수이다.

FREMOVE

VOID

파일을 삭제하는 함수이다.

FRENAME

VOID

파일 이름을 변경하는 함수이다.

GET_LINE

n/a

파일 텍스트 내 한 줄을 읽어오는 함수이다.

IS_OPEN

BOOLEAN

파일이 열려있는지 확인하는 함수이다.

NEW_LINE

BOOLEAN

파일 내 줄 띄어쓰기를 삽입하는 함수이다.

PUT

BOOLEAN

파일에 문자열을 넣는 함수이다.

PUT_LINE

BOOLEAN

파일에 한 줄의 문자열을 넣는 함수이다.

PUTF

BOOLEAN

formatted string을 넣는 함수이다.


보안 모델

설치는 super user에 이루어져야 하고 public으로 공개되어 있다.

Tablespace에 대한 접근 권한이 있어야 파일 생성/읽기/쓰기가 가능하다.


구성

본 절에서는 UTL_FILE 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.

FCLOSE

파일을 닫는 함수이다.

프로토타입

FCLOSE(file IN UTL_FILE.FILE_TYPE)
RETURNS UTL_FILE.FILE_TYPE;

파라미터

파라미터
설명

file

파일 핸들이다.

예제

x := UTL_FILE.CLOSE(22);

FCLOSE_ALL

현재 세션에 열린 모든 파일을 닫는 함수이다.

프로토타입

FCLOSE_ALL()
RETURNS VOID

예제

PERFORM UTL_FILE.FCLOSE_ALL();

FCOPY

파일의 연속되는 부분을 새로 생성된 파일에 복사하는 함수이다.

프로토타입

FCOPY(src_location TEXT, src_filename TEXT, dest_location TEXT, dest_filename TEXT)
RETURNS VOID

FCOPY(src_location TEXT, src_filename TEXT, dest_location TEXT, dest_filename TEXT, start_line INTEGER)
RETURNS VOID

FCOPY(src_location TEXT, src_filename TEXT, dest_location TEXT, dest_filename TEXT, start_line INTEGER, end_line INTEGER)
RETURNS VOID

파라미터

파라미터
설명

src_location

복사를 진행할 대상 파일이 위치할 경로의 디렉터리명이다.

src_filename

복사를 진행할 대상 파일의 이름이다.

dest_location

복사가 진행된 이후 파일이 위치할 경로의 디렉터리명이다.

dest_filename

복사가 진행된 이후의 파일의 이름이다.

start_line

복사를 진행할 시작 위치이다. 파일의 라인 번호를 사용해 명시한다.(기본값: 1, 파일의 첫 번째 의미이다.)

end_line

복사를 끝낼 종료 위치이다. start_line과 마찬가지로 라인 번호로 명시한다.(기본값: NULL, 파일의 마지막 라인을 의미한다.)

예제

SELECT utl_file.fcopy('test', 'fcopy_test.txt', 'test2', 'fcopy_test2.txt')

FFLUSH

아직 파일에 쓰지 않고 버퍼에 남아 있는 데이터를 파일에 쓰는 함수이다. 데이터는 반드시 EOL 문자로 끝나야 한다.

프로토타입

FFLUSH(file UTL_FILE.FILE_TYPE)
RETURNS VOID

파라미터

파라미터
설명

file

파일 핸들러이다.

예제

SELECT utl_file.fflush(22);

FGETATTR

디스크 파일의 속성을 반환하는 함수이다.

프로토타입

FGETATTR(location TEXT, filename TEXT, OUT fexists BOOLEAN, OUT file_length BIGINT, OUT blocksize INTEGER)

파라미터

파라미터
설명

location

파일의 경로를 나타내는 디렉터리명이다.

filename

파일의 이름이다.

fexists

파일의 존재 여부이다.

file_length

파일의 길이(Byte)이다.

blocksize

파일 시스템의 블록 크기(Byte)이다.

예제

SELECT * from utl_file.fgetattr('test', 'fgetattr_test.txt');

FOPEN

파일을 여는 함수이다. 성공하면 파일 핸들러값을 반환한다.

프로토타입

FOPEN(location TEXT, filename TEXT, open_mode TEXT)
RETURNS UTL_FILE.FILE_TYPE

FOPEN(location TEXT, filename TEXT, open_mode TEXT, max_linesize INTEGER)
RETURNS UTL_FILE.FILE_TYPE

FOPEN(location TEXT, filename TEXT, open_mode TEXT, max_linesize INTEGER, encoding NAME)
RETURNS UTL_FILE.FILE_TYPE

파라미터

파라미터
설명

location

파일의 경로를 나타내는 디렉터리명이다.

filename

파일의 이름이다.

open_mode

파일 모드이다.파일 모드의 종류는 다음과 같다.

  • r : 읽기 텍스트 모드이다.

  • w : 쓰기 텍스트 모드이다.

  • a : 추가 텍스트 모드이다.

max_linesize

각 라인에 포함되는 byte 수의 최댓값으로 newline 문자를 포함한다.최소 1byte에서 최대 32767bytes이다.(기본값: 1024bytes)

예제

X := utl_file.fopen('test/tmp/dir', 'sample.txt', 'r');

FREMOVE

파일을 삭제하는 함수이다. 파일 삭제에 실패한 경우 UTL_FILE_INVALID_PATH 혹은 UTL_FILE_INVALID_OPERATION exception이 발생한다.

프로토타입

FREMOVE(location TEXT, filename TEXT)
RETURNS VOID

파라미터

파라미터
설명

location

파일의 위치를 나타내는 디렉터리명이다.

filename

파일의 이름이다.

예제

SELECT utl_file.fremove('test', 'fremove_test.txt');

FRENAME

파일의 이름을 변경하는 함수이다. OS 셸에서 사용하는 mv 명령어와 동일하게 동작한다.

프로토타입

frename(location TEXT, filename TEXT, dest_dir TEXT, dest_file TEXT)
RETURNS VOID

frename(location TEXT, filename TEXT, dest_dir TEXT, dest_file TEXT, overwrite BOOLEAN)
RETURNS VOID

파라미터

파라미터
설명

location

원본 파일의 경로를 나타내는 디렉터리명이다.

filename

원본 파일의 이름이다.

dest_dir

변경된 파일의 경로를 나타내는 디렉터리명이다.

dest_file

변경된 파일의 이름이다.

overwrite

변경된 파일의 이름이 이미 존재할 경우 덮어쓸지를 지정한다.

예제

SELECT utl_file.frename('test', 'frename_test.txt', 'test', 'frename_test2.txt', true); 

GET_LINE

EOL 문자 또는 파일이 끝날 때까지의 내용을 읽어 오는 함수이다. FOPEN 함수에서 지정한 max_linesize 이상을 읽어 올 수 없다.

프로토타입

get_line(file UTL_FILE.FILE_TYPE, OUT buffer TEXT)

get_line(file UTL_FILE.FILE_TYPE, OUT buffer TEXT, len TEXT)

파라미터

파라미터
설명

file

파일 핸들러이다.

buffer

읽어 온 데이터이다.

len

파일로부터 읽어 올 Byte의 크기이다.(기본값: NULL, NULL인 경우 max_linesize 값을 갖는다.)

예제

DO
$$
DECLARE
    read_file   utl_file.file_type;
    line TEXT;
    len int := 2;
BEGIN
    read_file := utl_file.fopen('test', 'read_test.txt', 'r');
    SELECT utl_file.get_line(read_file, len) INTO line;
END;
$$;

IS_OPEN

파일 핸들러를 통해 파일이 열려 있는지 검사하는 함수이다. 파일이 열려있는 경우 TRUE를 반환하고, 그렇지 않은 경우 FALSE를 반환한다.

프로토타입

IS_OPEN(file UTL_FILE.FILE_TYPE)

파라미터

파라미터
설명

file

파일 핸들러입니다.

예제

DO
$$
DECLARE
    read_file   utl_file.file_type;
    line        TEXT;
    len int := 2;
BEGIN
    read_file := utl_file.fopen('test', 'read_test.txt', 'r');

    WHILE utl_file.is_open(read_file)
    LOOP
        SELECT utl_file.get_line(read_file, len) INTO line;
    END LOOP;
END;
$$;

NEW_LINE

파일에 하나 이상의 EOL 문자를 넣는 함수이다.

프로토타입

NEW_LINE(file UTL_FILE.FILE_TYPE)
RETURNS BOOLEAN

NEW_LINE(file UTL_FILE.FILE_TYPE, lines INTEGER)
RETURNS BOOLEAN

파라미터

파라미터
설명

file

파일 핸들러이다.

lines

파일에 넣을 EOL 문자의 개수이다.

예제

DO
$$
DECLARE
    ftest utl_file.file_type;
    pgtap_ok text; -- dummy return for pgtap to work inside anon block
BEGIN
    ftest := utl_file.fopen('test', 'put_test.txt', 'w');
        
    -- Put a new line into a txt file
    PERFORM utl_file.new_line(ftest);
END;
$$;

PUT

파일에 문자열을 넣을 때 사용하는 함수이다

프로토타입

PUT(file UTL_FILE.FILE_TYPE, buffer TEXT)
RETURNS BOOLEAN

파라미터

파라미터
설명

file

파일 핸들러이다.

buffer

파일에 쓸 내용이다. 파일이 w(쓰기 텍스트)나 a(추가 텍스트) 모드로 열리지 않은 경우 UTL_FILE_INVALID_OPERATION exception이 발생한다.

예제

DO
$$
BEGIN
    PERFORM utl_file.put(utl_file.fopen('test', 'put_test.txt', 'w'), 'ABC ');
END;
$$;

PUT_LINE

한 줄의 텍스트를 파일에 쓰는 함수이다. 이때 라인은 플랫폼에 종속적인 EOL 문자로 끝낸다.

프로토타입

PUT_LINE(file UTL_FILE.FILE_TYPE, buffer TEXT)
RETURNS BOOLEAN

PUT_LINE(file UTL_FILE.FILE_TYPE, buffer TEXT, autoflush BOOLEAN)
RETURNS BOOLEAN

파라미터

파라미터
설명

file

파일 핸들러이다.

buffer

파일에 쓸 라인이다.

autoflush

쓰기를 한 후 출력 버퍼를 비울지 여부를 결정한다.

  • TRUE : 버퍼를 비운다.

  • FALSE : 기본값으로 버퍼를 비우지 않는다.

예제

DO
$$
BEGIN
    PERFORM utl_file.put_line(utl_file.fopen('test', 'put_test.txt', 'w'), 'ABC ', true);
END;
$$;

PUTF

형식화된 PUT 함수이다. PUTF의 형식화된 문자열은 C언어에서 표준 입출력(standard I/O)의 fprintf에서의 형식화된 문자열과 동일하게 %s와 이스케이프 문자를 포함한다. 이스케이프 문자로 \n을 사용할 수 있으며 %s는 그 뒤에 나오는 인수 문자열을 대체한다.

예를 들어 다음과 같은 세 개의 인수가 있다고 가정하면,

arg1 = 'string1'; 
arg2 = 'string2'; 
arg3 = 'string3'; 

위의 세 개의 인수를 사용하는 형식화된 문자열은 다음과 같다.

utl_file.putf( ofile, 'This is example of formatted string : %s %s %s \n',
               arg1, arg2, arg3);

또한 위의 내용이 실행되면 다음과 같은 내용이 출력 된다.

This is example of formated string : string1 string2 string3

프로토타입

UTL_FILE.PUTF(file UTL_FILE.FILE_TYPE, format TEXT)
RETURNS BOOLEAN

UTL_FILE.PUTF(file UTL_FILE.FILE_TYPE, format TEXT, arg1 TEXT)
RETURNS BOOLEAN

UTL_FILE.PUTF(file UTL_FILE.FILE_TYPE, format TEXT, arg1 TEXT, arg2 TEXT)
RETURNS BOOLEAN

UTL_FILE.PUTF(file UTL_FILE.FILE_TYPE, format TEXT, arg1 TEXT, arg2 TEXT, arg3 TEXT)
RETURNS BOOLEAN

UTL_FILE.PUTF(file UTL_FILE.FILE_TYPE, format TEXT, arg1 TEXT, arg2 TEXT, arg3 TEXT, arg4 TEXT)
RETURNS BOOLEAN

UTL_FILE.PUTF(file UTL_FILE.FILE_TYPE, format TEXT, arg1 TEXT, arg2 TEXT, arg3 TEXT, arg4 TEXT, arg5 TEXT)
RETURNS BOOLEAN

파라미터

파라미터
설명

file

파일 핸들러이다.

format

%s와 이스케이프 문자(\n)를 포함하는 형식화된 문자열이다.

arg1-5

%s에 대체되는 선택할 수 있는 문자열이다. (기본값: NULL)

예제

DO
$$
BEGIN
    PERFORM utl_file.putf(utl_file.fopen('test', 'put_test.txt', 'w'), 
                          '[1=%s, 2=%s, 3=%s, 4=%s, 5=%s]', '1', '2', '3', '4', '5');
END;
$$;

Last updated