2014-09-24 13 views
5

Ho una serie di query che voglio esportare in file .csv. L'unico strumento che devo interrogare sul database è SQL Developer.SPOOL restituisce file vuoti quando si tenta di esportare da SQL Developer

Potrei eseguire ogni query e quindi utilizzare la finestra di dialogo Esporta in SQL Developer per scriverle su file, ma questo è ingombrante, in particolare quando questo deve essere fatto per più file ogni giorno.

Questo funziona per alcune persone Directly export a query to CSV using SQL Developer

Ma non funziona per me.

Per esempio, se provo

spool "C:\Users\james.foreman\Downloads\Temp\myfile.csv" 

select distinct placement_type 
FROM jf_placements; 

spool off; 

quindi nel riquadro di output dello script di SQL Developer, vedo

Impossibile creare il file di spool C: \ Users \ james.foreman \ Download \ Temp \ myfile.csv

e sebbene myfile.csv sia stato creato, non ci sono risultati. (Ci sono due righe restituite dalla query.)

Il mio primo pensiero è stato che c'era un problema di autorizzazioni in C: \ Users \ james.foreman \ Downloads \ Temp ma non sembra essere il caso , perché se elimino myfile.csv e poi eseguo l'SQL, il file myfile.csv viene ricreato, ma non contiene mai nulla.

Quindi presumo che questo sia un problema di configurazione, sia con il computer Windows su cui sto eseguendo SQL Developer, sia con il mio SQL Developer impostato. Dove dovrei cercare di indagare ulteriormente?

La risposta di @Devolus a Procedure to export table to multiple csv files include l'istruzione "Nella finestra SQL fare clic con il pulsante destro del mouse -> Cambia finestra in -> Finestra di comando", ma se si fa clic con il pulsante destro del mouse sulla finestra SQL, non vedo l'opzione Cambia finestra .

(con sistema operativo Windows 7, SQL Developer versione 4.0.2.15, Build 15.21, database è Oracle 11.2)

+0

Potete provare la stessa da 'SQL * Plus' e vedere se questa volta il file ha un contenuto o meno. –

+0

Ciao, non posso; Ho solo SQL Developer su questa macchina e non SQL * Plus. – JamesF

+0

Vedi la mia risposta. Per quanto riguarda 'SQL * Plus', volevo solo che tu verificassi. Nessun problema, basta seguire la risposta. –

risposta

5

Il fatto che viene creato il file, ma non ha i dati, forse, l'ultima affermazione, non è SPOOL OFF ancora eseguito. Aggiungi una nuova riga nello script e riprova.

Ad esempio, lo script sarà simile:

spool "C:\Users\james.foreman\Downloads\Temp\myfile.csv" 

    select distinct placement_type 
    FROM jf_placements 
    /

    spool off 
    /

-- need a new line to make sure spool off executes 
+0

Grazie - ora ha la query SQL nel file dei risultati. Anche se vedo da altre domande su questo argomento che il passaggio a una sceneggiatura dovrebbe risolverlo. – JamesF

+0

Grazie per il feedback. Sì, puoi inserire il contenuto all'interno di uno script '.sql' ed eseguire lo script. –

+0

In "Oracle SQL Developer" eseguire l'istruzione come script, ad esempio, premere "Esegui script" invece di "Esegui stato" o è possibile premere F5. –

2

Quando si esegue lo script, premere "Run Script" invece di "Run statment" oppure si può premere F5.

riparato il mio problema, spero che possa risolvere anche il vostro

1

Nel mio caso, ci sono voluti due cose per risolvere il problema:

  • esecuzione da uno script (utilizzando @C: \ file. sql notazione)
  • l'aggiornamento alla versione più recente di SQL Developer

stavo correndo SQL Developer 3.2.20.09 (non funziona), e ora utilizzare 4.0.2.51 (esattamente lo stesso script funziona).

Inoltre,