프로그래밍/Oracle

Oracle에서 Text File 만들기

레다야 2007. 8. 14. 12:48


오라클에서 DB의 내용을 Text File로 만드는 방법입니다.

1. 먼저 파일을 만들 디렉토리를 만들어야 합니다.
    1) 오라클 계정으로 로그인 합니다.
        linux:/home/oracle # su - oracle

    2) sysdba 계정으로 sqlplus에 접속합니다.
        oracle@linux:~> sqlplus "/as sysdba"

    3) 오라클 디렉토리를 생성합니다.
       SQL> create directory TARGET_DIR as '/DATA/TEST';

    4) 권한을 지정 합니다.
       SQL> grant read, write on directory TARGET_DIR to public;


2. 프로시저나 Function을 만들어서 사용합니다.
CREATE OR REPLACE PROCEDURE SP_WRITE_FILE IS
file_handle    utl_file.file_type;

cursor c1 is     
    SELECT CODE, MSG FROM T_FILE_DATA;  -- 파일로 쓸 데이터 내용

v_CODE    T_FILE_DATA.CODE%TYPE;
v_MSG    T_FILE_DATA.MSG%TYPE;

BEGIN  
   -- Temp 파일로 만든 다음 dat로 이름 변경함
   file_handle := utl_file.fopen('TARGET_DIR', 'FileData.dat.tmp', 'w');

   OPEN c1;
   LOOP
     FETCH c1 INTO v_CODE, v_MSG ;
      EXIT WHEN c1%notfound;
      utl_file.put_line(file_handle,
      v_CODE    || CHR(9) ||    -- TAB을 구분자로 사용
      v_MSG);
   END LOOP;
   CLOSE c1;
   utl_file.fclose(file_handle);

   utl_file.frename('TARGET_DIR', 'FileData.dat.tmp', 'TARGET_DIR', 'FileData.dat', TRUE);
 
END SP_WRITE_FILE;

3. 필요시 Triger를 사용하여 데이터를 파일로 만드는 것도 하나의 방법이 되겠습니다.

반응형