2017-11-16 5 views
0

sqlplus의 spool 명령을 사용하여 일부 쿼리 행이있는 파일을 생성하고 있습니다.spool 명령이 sql plus의 모든 행을 저장하지 않습니다.

먼저 출력 형식을 지정하고 두 번째로 출력 파일을 생성하기 위해 스풀을 수행하지만 모든 행을 저장하지는 않습니다.

set lines 100 
set pages 1500 
set colsep ';' 
spool /home/bsoinst/users/example.txt 

select name,salary from employees는 (검색어 예)

원래의 질의 1433 열을 생성하지만 파일에 단지 1,414

감사

를 나타낸다는
+0

같은 세션에서 1433 개의 행과 스풀 된 버전을 얻기 위해 쿼리를 실행 했습니까? 그렇다면 커밋 된 변경 사항이 그 사이의 다른 곳에서 만들어 졌을 수 있습니다. 그렇지 않은 경우 세션 중 하나에서 커밋되지 않은 변경 사항이 있습니까? 그리고 정확히 동일한 쿼리 였는지 확신 할 수 있습니까? 하나는 '별개'가 아니거나 그룹화가 다른 것입니까? –

+0

답장을 보내 주셔서 감사합니다. 쿼리가 동일한 세션에서 실행 된 경우. 파일에서 쿼리를 실행하려고 시도했는데 행이 두 개인 것으로 보입니다. – Macgregor

+0

그 세션에 아직 로그인되어 있다면'스풀 오프 '했습니까? 아직 입력하지 않은 모든 파일은 여전히 ​​파일에 저장되지만 완충되므로 디스크에 즉시 기록되지 않습니다. –

답변

0
출력 스풀 파일에 기록되지만

버퍼링. 표시 한 대화 형 세션에서 스풀링 한 다음 세션을 종료하거나 spool off (또는 다른 스풀 시작)으로 스풀을 종료 할 때까지 버퍼를 통해 is still being written to the file을 수행하십시오.

SQL은 * Plus는

버퍼가 가득 찰 때까지,이 파일 시스템에 저장되지 않을 것입니다 ... 오프 스풀링 차례 때까지 파일에 대한 정보를 스풀하고 있습니다. 따라서 파일을 보면 불완전 할 것입니다.

당신이 할 경우

spool off 

다음 나머지 부분 버퍼가 플러시되며 파일이 닫힙니다하고도 파일 시스템에 완료됩니다. (이제는 쿼리를 실행하고 해당 명령을 실행하는 사이에 수행 한 작업도 볼 수 있습니다.)

버퍼 크기는 운영 체제/파일 시스템에 따라 다르며 SQL * Plus 내에서 제어 할 수있는 것이 아닙니다.

+0

감사합니다. 스풀을 사용하지 않았습니다. 나는 모든 행을 유지한다면 그것을 놓았습니다. – Macgregor