HPL/SQL - UTL_FILE 패키지

HPL/SQL - UTL_FILE 패키지

UTL_FILE 패키지는 HDFS 파일을 읽고 쓰는 기능을 제공하는 패키지예요. HPL/SQL에서 파일 입출력을 직접 다루고 싶을 때 사용합니다.

출처: 문서

본문

기본적인 사용 예는 다음과 같아요.

DECLARE
  f UTL_FILE.FILE_TYPE;
BEGIN
  f := UTL_FILE.FOPEN('/user/dm', 'hello.txt', 'w');
  UTL_FILE.PUT_LINE(f, 'Hello, world!');
  UTL_FILE.FCLOSE(f);
END;

이 예제에서는 HDFS의 /user/dm/hello.txt를 만들고, 한 줄을 쓴 뒤 파일을 닫습니다.

UTL_FILE.FILE_TYPE 타입

UTL_FILE 패키지로 파일을 다루려면 먼저 UTL_FILE.FILE_TYPE 변수를 선언해야 해요. UTL_FILE.FOPEN 함수로 이 변수에 값을 할당한 뒤, 나머지 함수들에서 인자로 사용합니다.

DECLARE
  f UTL_FILE.FILE_TYPE;
  f2 UTL_FILE.FILE_TYPE;

FOPEN 함수

FOPEN 함수는 파일을 여는 함수입니다.

file_handle: = FOPEN(directory, file, mode);

Parameters

Parameter Type Description
directory VARCHAR 디렉토리 이름
file VARCHAR 파일 이름
mode VARCHAR 열기 모드: 'r', 'w'

File Open Modes

  • 'r': 읽기 위해 파일을 엽니다.
  • 'w': 쓰기 위해 파일을 엽니다. 파일이 없으면 새로 만들고, 이미 존재하면 내용을 덮어씁니다.

Return Value: FOPEN은 파일을 조작하는 모든 다른 함수에 전달해야 하는 UTL_FILE.FILE_TYPE 파일 핸들을 반환해요.

Example

DECLARE
  f UTL_FILE.FILE_TYPE;
BEGIN
  f := UTL_FILE.FOPEN('/user/dm', 'hello.txt', 'w');
END;

GET_LINE 함수

GET_LINE 함수는 열려 있는 파일에서 텍스트 문자열을 읽는 함수입니다. 새 줄(출력 문자열에는 미포함), 파일 끝, 또는 지정한 최대 길이까지 읽어요.

UTL_FILE.GET_LINE(file_handle, var [, len]);

Parameters

Parameter Type Description
file_handle UTL_FILE.FILE_TYPE 열린 파일 핸들
var VARCHAR 줄을 저장할 변수
len INT 최대 줄 길이 (선택)

Return Value: 없음

Example

DECLARE
  f UTL_FILE.FILE_TYPE;
  s VARCHAR(100);
BEGIN
  f := UTL_FILE.FOPEN('/user/dm', 'hello.txt', 'r');
  UTL_FILE.GET_LINE(f, s, 100);
END;

PUT_LINE 함수

PUT_LINE 함수는 파일에 텍스트 문자열을 쓰는 함수입니다. 줄 종결자(line terminator)를 함께 추가해요.

UTL_FILE.PUT_LINE(file_handle, text);

Parameters

Parameter Type Description
file_handle UTL_FILE.FILE_TYPE 열린 파일 핸들
text VARCHAR 쓸 텍스트 문자열

Return Value: 없음

Example

DECLARE
  f UTL_FILE.FILE_TYPE;
BEGIN
  f := UTL_FILE.FOPEN('/user/dm', 'hello.txt', 'w');
  UTL_FILE.PUT_LINE(f, 'Hello, world!');
END;

PUT 함수

PUT 함수는 파일에 텍스트 문자열을 씁니다. PUT_LINE과 달리 줄 종결자를 추가하지 않아요.

UTL_FILE.PUT(file_handle, text);

Parameters

Parameter Type Description
file_handle UTL_FILE.FILE_TYPE 열린 파일 핸들
text VARCHAR 쓸 텍스트 문자열

Return Value: 없음

Example

DECLARE
  f UTL_FILE.FILE_TYPE;
BEGIN
  f := UTL_FILE.FOPEN('/user/dm', 'hello.txt', 'w');
  UTL_FILE.PUT(f, 'Hello, world!');
END;

FCLOSE 함수

FCLOSE 함수는 파일 핸들로 식별되는 열린 파일을 닫는 함수입니다.

UTL_FILE.FCLOSE(file_handle);

Parameters

Parameter Type Description
file_handle UTL_FILE.FILE_TYPE 열린 파일 핸들

Return Value: 없음

Example

DECLARE
  f UTL_FILE.FILE_TYPE;
BEGIN
  f := UTL_FILE.FOPEN('/user/dm', 'hello.txt', 'w');
  UTL_FILE.FCLOSE(f);
END;

더 알아보기 (Learn more)

FOPENPUT_LINE/GET_LINEFCLOSE 순서가 UTL_FILE 사용의 기본 패턴이에요. PUTPUT_LINE의 차이(줄 종결자 추가 여부)만 기억하면 파일 쓰기를 자유롭게 제어할 수 있습니다.