2013-03-06 9 views

risposta

46

Utilizzare la bobina:

spool myoutputfile.txt 
select * from users; 
spool off; 

Si noti che questo creerà myoutputfile.txt nella directory da cui è stato eseguito SQL * Plus.

Se è necessario eseguire questo da un file SQL (ad esempio, "tmp.sql") quando SQLPlus avvia e l'output in un file denominato "output.txt":

tmp.sql:

select * from users; 

comando:

sqlplus -s username/[email protected] @tmp.sql > output.txt 

Intendiamoci, non ho un'istanza di Oracle di fronte a me in questo momento, quindi potrebbe essere necessario fare un po 'del proprio lavoro per eseguire il debug quello che ho scritto da memoria.

+0

ringraziamento, ma posso chiedere dove è il file di spool myoutputfile.txt individuare? Inoltre, che dire degli utenti non hanno il permesso di eseguire lo spool? – Dreamer

+0

Inoltre, come possiamo specificare un percorso/una cartella del file di output, specialmente in Windows? – Dreamer

+2

Non ho mai avuto la fortuna di specificare dove è scritto lo spool eccetto che per eseguire 'sqlplus.exe' dalla directory in cui andrà l'output spool. – Marc

14

Molto simile a Marc, unica differenza che vorrei fare sarebbe quella di spool a un parametro in questo modo:

WHENEVER SQLERROR EXIT 1 
SET LINES 32000 
SET TERMOUT OFF ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON TAB OFF 
SET SERVEROUTPUT ON 

spool &1 

-- Code 

spool off 
exit 

E poi chiamare la SQLPLUS come

sqlplus -s username/[email protected] @tmp.sql /tmp/output.txt 
+0

Sì. Stavo per aggiungere il 'set pages 0',' set trimspool on', ecc. Ma poi la domanda è cambiata e ho dovuto inseguire qualcos'altro! Buoni suggerimenti però. – Marc

+0

Grazie John, la tua versione restituisce l'output SQL pulito che sono stato cercato –

2

solo per fare la risposta 2 molto più semplice, è anche possibile definire la cartella in cui è possibile inserire il file salvato

spool /home/admin/myoutputfile.txt 
    select * from table_name; 
    spool off; 

dopo t solo con nano o vi myoutputfile.txt, vedrai tutta la traccia sql.

speranza è che l'aiuto :)

2
spool "D:\test\test.txt" 

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

Questa interrogazione si spool il risultato sql in D: \ test \ test.txt

Problemi correlati