TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-07-15 |
제목 | SPOOL을 이용하여 TABLE의 DATA를 SAM FILE로 만드는 예제 | ||
---|---|---|---|
SPOOL을 이용하여 TABLE의 DATA를 SAM FILE로 만드는 예제
====================================================== Purpose ------- Oracle 의 table data를 text file로 받는 방법에 대해 알아보자. Explanation ----------- Oracle에서 table의 data를 sam file형태로 만드는 방법에는 proc를 이용하는 등 여러 가지가 있지만 SPOOL Command를 이용하는 것이 가장 간편하다. 이 경우 sqlplus 자체적으로 지원하는 여러 가지 command를 사용하면 sam file을 더 깨끗한 데이터만 받도록 할 수 있다. Spool 시에 이용할 수 있는 sqlplus option 은 다음과 같은 것이 있다. . set pagesize nn - 한 page에 몇 line을 display할 것인지를 결정한다. pagesize가 바뀔 때마다 한 line 씩 공백이 생기므로 spool 로 받을 때는 크게 정하는 것이 좋다. . set heading on/off - data의 column name을 display 할 것인지를 결정한다. Spool 작업시에는 보통 column 이름이 나오지 않도록 한다. . set linesize nn - line의 크기를 결정한다. select하는 한 row의 길이가 길면 다음 line으로 넘어가지 않고 계속 연결되도록 하기 위해 크게 설정할 때도 있다. . set term on/off - script를 실행할 때 화면에 display 될 지를 결정한다. 보통 많은 데이터를 spool 로 받을 때는 화면에 display하면 시간이 오래 걸리므로 off로 하는 경우가 많다. . set each on/off - off로 하면 script에서 실행하는 명령어가 화면에 display되지 않고 실행 결과만 나타나도록 한다. 이런 set 명령을 이용하여 sam file을 만들기 위해서는 다음과 같이 script를 이용하여 한 번에 실행하는 것이 좋다. Example ------- $ vi dept.sql -- script를 작성한다. set heading off /* header가 display되지 않는다 */ set pagesize 1000 /* pagesize의 default는 14이며 그대로 하면 14줄마다 1줄씩 공백이 생기므로 그런 현상을 방지하기 위해 크게 지정한다. */ set linesize 300 /* linesize도 record 길이만큼 지정하여 아래로 구분되지 않도록 한다. */ set echo off /* 명령이 display되지 않도록 한다. */ set term off /* 조회 결과가 화면에 나오지 않도록 한다. */ /* 이상은 sql에서 사용하는 set command */ spool dept.dat /* data가 들어가는 화일 */ select deptno, dname, loc from dept / /* 위의 select문에서 컬럼 사이에 일정한 공백이나 ',' 로 구분하고 싶다면 컬럼들 사이에 원하는 문자를 지정하면 된다. 예) select deptno ||','||dname||','|| loc from dept */ spool off $ sqlplus scott/tiger -- 해당 user로 접속한다. SQL> @dept -- 해당 script를 실행한다. 실행된 후에 다음의 생성된 dept.dat file을 열어보면 원하는 형태의 data가 저장되어 있다. Reference Documents ------------------- SQL*PLUS User's Guide |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |