Oracle에서 Text File 만들기
오라클에서 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를 사용하여 데이터를 파일로 만드는 것도 하나의 방법이 되겠습니다.