2014-10-17 1 views
0

Oracle SQL Developer에서 SPOOL 명령을 사용하여 SQL 쿼리의 결과를 CSV 파일로 출력하려고합니다.Oracle SQL Developer에서 spool 명령을 사용하여 CSV 파일로 쿼리 결과를 출력하는 방법

간단한 쿼리를 스크립트로 호출하여 결과를 출력 할 수 있습니다. (F5)

spool trivial_output.csv 
select /*csv*/ * from trivial_table; 
spool off; 

을 그리고 이것은 내가 성공적으로 불리는 방법은 다음과 같습니다 : 여기 근무 쿼리는

@'C:\Spool to CSV\trivial_query.sql' 

그러나, 나는 조금 더 복잡한 쿼리와 똑같은 일을 시도 할 때, 나는 오류 메시지가 : "SQL 오류 : ORA-00933를 : SQL 명령은하지 제대로 00933. 00000 종료 - SQL 명령이 제대로 종료되지"

spool total_records.csv 
select /*csv*/  enrol.year, enrol.college, count(*) as "Total Records" 
from  enrolment enrol 
inner join regis_status_type regstatus 
on   enrol.regis_status_type_id = regstatus.regis_status_type_id 
where  enrol.year in ('201213', '201314') 
and   regstatus.regis_status_type_code in ('10','41') 
group by enrol.year, enrol.college 
order by enrol.year, enrol.college 
spool off; 
+0

당신은 아마 당신의 선택 절의 일부 하드 코딩 쉼표가 필요합니다. 실제로, 대학도 쉼표를 포함하고있는 경우에는 올바르게 입력하고 큰 따옴표를 붙이십시오. –

+0

중요한지 확실하지 않지만 오라클 오류 메시지는 오류가 마지막 줄 ("스풀 오프") 바로 전에 발생한다고 말합니다. 따라서 문제는 SELECT 문보다 나중에 발생하는 것 같습니다. – b00kgrrl

+1

두 번째 예제에서 SELECT 문 다음에 세미콜론이 누락 된 것 같습니다. 따라서 Oracle은 별도의 SQL * Plus 명령이 아닌 SQL 문의 마지막 줄로 '스풀 오프'를 해석합니다. 이는 차례로 SQL 문을 구문 적으로 무효화시킵니다. –

답변

1

난 그냥 separ에 세미콜론을 추가 할 필요 SQL 문에서 SQL * Plus 명령을 먹었습니다. 이 쿼리는 여기에 SQL 결과를 스풀합니다 Justin Cave

spool total_records.csv 
select /*csv*/  enrol.year, enrol.college, count(*) as "Total Records" 
from  enrolment enrol 
inner join regis_status_type regstatus 
on   enrol.regis_status_type_id = regstatus.regis_status_type_id 
where  enrol.year in ('201213', '201314') 
and   regstatus.regis_status_type_code in ('10','41') 
group by enrol.year, enrol.college 
order by enrol.year, enrol.college; 
spool off; 
0
spool "D:\test\test.txt" 

select 
    a.ename 
from 
    employee a 
inner join department b 
on 
( 
    a.dept_id = b.dept_id 
) 
; 
spool off 

덕분에 D : \ 테스트 \ TEST.TXT