programing

스풀 명령:SQL 문을 파일로 출력하지 않음

batch 2023. 7. 5. 20:34
반응형

스풀 명령:SQL 문을 파일로 출력하지 않음

쿼리를 CSV 파일로 출력하고 싶고 아래를 작은 테스트로 사용하고 있습니다.

spool c:\test.csv 
select /*csv*/ username, user_id, created from all_users;
spool off;

그러나 출력에는 실제 선택 문이 첫 번째 줄로 포함되어 있습니다.

> select /*csv*/ username    user_id     created from all_users
USERNAME    USER_ID CREATED
REPORT  52  11-Sep-13
WEBFOCUS    51  18-Sep-12

이것을 예방할 방법이 있습니까?그럴 수도 있다고 생각하고 SET Heading Off를 시도했지만 변경되지 않았습니다.스크립트로 SQL Developer an running을 사용하고 있습니다.

고마워요 브루스

유감스럽게도 SQL Developer는 다음을 완전히 준수하지 않습니다.set echo offSQL*Plus에서 이 문제를 해결하는 것처럼 보이는 명령입니다.

이에 대한 유일한 해결 방법은 스크립트로 수행 중인 작업을 저장하는 것입니다.test.sql포함:

set echo off
spool c:\test.csv 
select /*csv*/ username, user_id, created from all_users;
spool off;

그런 다음 SQL Developer에서 해당 스크립트만 호출합니다.

@test.sql

스크립트로 실행합니다(F5).

스크립트 파일로 저장하는 것은 애드혹 쿼리 이외의 다른 쿼리에 큰 어려움이 되지 않습니다.@스크립트를 열고 직접 실행하는 것은 약간의 고통일 뿐입니다.


SQL Developer 포럼에서 약간의 검색을 통해 동일한 솔루션을 찾았는데, 개발 팀은 SQL*Plus가 수행하는 작업을 모방하는 것이 의도적인 행동이라고 제안했습니다. 이를 사용하여 스크립트를 실행해야 합니다.@쿼리 텍스트를 숨기기 위해 여기에도 있습니다.

내 셸 스크립트는 sql 파일을 호출하고 실행합니다.스풀 출력의 시작 부분에 SQL 쿼리가 있고 그 뒤에 쿼리 결과가 있습니다.

이것으로 문제가 해결되지 않았습니다.

set echo off

이것은 나의 문제를 해결했습니다.

set verify off

(7년 이상이 지난 후) 이 문제에 발이 묶인 사람이라면 누구나...

이것은 저에게 효과가 있습니다... sqlplus를 호출하는 방식에 맞게 조정합니다.

sqlplus -s / as sysdba 2>&1 > /dev/null <<EOF
  whenever sqlerror exit sql.sqlcode;
  set echo off 
  set verify off
  set feedback off
  set term off
  set head off
  set pages 1000
  set lines 200

  spool /tmp/whatever.output
  
  ### Your_SQL_statement_here ###
  example: select sysdate from dual;
  example: select * from V\$LOGFILE;

  spool off
EOF

여기서 -s 플래그는 스크립트를 실행할 때 SQL 문을 표시하지 않는 비결입니다.

set echo off
spool c:\test.csv 
select /*csv*/ username, user_id, created from all_users;
spool off;

결과 grig에 내보내기 옵션을 사용하여 쿼리 결과를 직접 내보낼 수 있습니다.이 내보내기에는 내보낼 수 있는 다양한 옵션이 있습니다.이게 될 것 같아요.

Toad 또는 SQL Developer에서 쿼리 실행

---select /*csv*/ username, user_id, created from all_users;

.SQL 형식으로 "C" 드라이브에 저장

--- x.sql

명령을 실행합니다.

---- set serveroutput on
     spool y.csv
     @c:\x.sql
     spool off;

언급URL : https://stackoverflow.com/questions/19033943/spool-command-do-not-output-sql-statement-to-file

반응형