본문 바로가기
IT만들기/Database

오라클 sqlplus 에서 실행한 쿼리 조회 결과 스풀(spool) 기능으로 캡처하여 텍스트 저장하기

by 커피향처럼 2021. 7. 8.

토드(TOAD) 등의 데이터베이스 툴을 사용하지 않고 오라클의 기본 프로그램인 SQLPLUS를 사용하면 실행한 쿼리의 조회 결과를 보기기 무척 힘듭니다.
오라클 sqlplus에서 spool 기능을 사용하여 결과를 텍스트로 저장하고 컬럼 조회TOAD) 등의 데이터베이스 툴을 사용하지 않고 오라클의 기본 프로그램인 SQLPLUS를 사용하면 실행한 쿼리의 조회 결과를 보기기 무척 힘듭니다.

오라클 sqlplus에서 spool 기능을 사용하여 결과를 텍스트로 저장하고 컬럼 조회 결과마다 컴마(,)로 출력하는 방법을 사용한다면 엑셀에서도 열어서 보기 편하게 볼수 있답니다.

데이터베이스 조회 결과를 "C:\spooltest.txt"로 저장하는 예제를 설명하도록 하겠습니다.
UNIX AIX 등에서는 경로를 지정하지 않으면 sqlplus를 실행한 경로에 파일이 만들어 집니다

다음과 같이 오라클 예제 스키마인 scott로 접속해보도록 할께요.
SQLPLUS scott/tiger

sqlplus에서 DB에 접속하였으면 다음과 같이 입력해 주세요.

set echo off
set trimspool on
set pagesize 0
set feedback off
spool c:\spooltest.txt

스풀(spool), 결과를 텍스트 파일로 저장하기 준비가 되었습니다.
오라클의 샘플 테이블을 다음과 같이 조회하면 spool 명령으로 지정한 파일에 내용이 저장된답니다.

SELECT empno || ',' || sal || ',' || ename || ',' || to_char(hiredate, 'YYYY-MM-DD') FROM emp;
SELECT deptno, dname FROM dept;

이렇게 하면 내용이 sqlplus 콘솔 화면에 잔뜩 출력될거예요.

이렇게 하고 캡처를 중지할려면 다음과 같이 spool 기능을 꺼주면 됩니다.
spool 종료 명령입니다.

spool off

 

이 외에 spool 관련 옵션에 대한 명령어입니다.

헤더(header)가 출력(display)되지 않고 데이터만 출력하기 위한 명령입니다.
SQL>SET HEADING OFF

pagesize의 default는 14이며 그대로 하면 14줄마다 1줄씩 공백이 생기므로 그런 현상을 방지하기 위해 크게 지정합니다.
SQL>SET PAGESIZE 1000

linesize를 record 길이만큼 지정하여 아래로 구분되지 않도록 합니다.
SQL>SET LINESIZE 300

명령어가 출력되지 않도록 지정하는 옵션, 명령어입니다.
SQL>SET ECHO OFF

조회 결과가 화면에 나오지 않고 텍스트 파일에만 나오도록 하는 명령어입니다.
SQL>SET TERM OFF



 

댓글