Come esportare il risultato della query in CSV in Oracle SQL Developer?


Risposte:


376

Versione che sto usando

testo alternativo

Aggiornamento 5 maggio 2012

Jeff Smith ha scritto sul blog mostrando quello che credo sia il metodo migliore per ottenere output CSV da SQL Developer. Il metodo di Jeff è mostrato come Metodo 1 di seguito:

Metodo 1

Aggiungi il commento /*csv*/alla tua query SQL ed esegui la query come script (usando F5 o il 2o pulsante di esecuzione sulla barra degli strumenti del foglio di lavoro)

inserisci qui la descrizione dell'immagine

Questo è tutto.

Metodo 2

Esegui una query

testo alternativo

Fare clic con il tasto destro e selezionare Scarica.

Aggiornare. In Sql Developer Versione 3.0.04 lo scarico è stato modificato in esportazione Grazie a Janis Peisenieks per averlo segnalato

testo alternativo

Schermata rivista per SQL Developer Versione 3.0.04

inserisci qui la descrizione dell'immagine

Dal menu a discesa formato selezionare CSV

testo alternativo

E segui il resto delle istruzioni sullo schermo.


25
+1. Il termine "Scarica" ​​mi sembra anti-intuitivo. "Caricare" alcuni dati significa inserirli nel database; pertanto "Scarica" ​​dovrebbe significare che i dati vengono eliminati ...
Jeffrey Kemp,

8
Nella versione 3.0.04 questa opzione è stata rinominata in Export.
Janis Peisenieks, il

2
Grande. ps in maiuscolo /*CSV*/non ha funzionato per me, ma in minuscolo lo ha /*csv*/fatto. Grazie!
Eran Medan,

3
Nota anche che il metodo 2 può incorrere in un bug (ancora presente nella mia versione 3.0.04) in cui si blocca semplicemente con un conteggio di righe di grandi dimensioni (circa 3K righe). Sto usando questo SQLPLUS di vecchia scuola perché non ho visto prima il metodo 1 sopra, ma ad alcuni potrebbe piacere questo: {code} IMPOSTA SOTTOTINTA OFF IMPOSTA COLSEP ',' IMPOSTA LINEE 20000 PAGINE 20000 IMPOSTA FEEDBACK off - opzione SET HEADING off Spool C: \ Export \ EMP.csv - Ora la query SELEZIONA * DA EMP; Spool OFF
Jim P

1
@topr Usa il metodo 1, quindi seleziona tutto, copia e incolla in un editor di testo e salva come csv. Potresti anche essere in grado di incollare direttamente in Excel, ma non ne sono sicuro.
Travis,

45

Non esattamente "esportazione", ma puoi selezionare le righe (o Ctrl- Aper selezionarle tutte) nella griglia che desideri esportare, quindi copiarle con Ctrl- C.

L'impostazione predefinita è delimitata da tabulazioni. Puoi incollarlo in Excel o in qualche altro editor e manipolare i delimitatori come preferisci.

Inoltre, se usi Ctrl- Shift- Canziché Ctrl- C, copierai anche le intestazioni di colonna.


5
fantastico, stavo cercando specificamente come copiare le intestazioni. Grazie!
mishkin,

3
L'unico problema, se hai molte righe, questo significa che dovrà interrogare di nuovo l'intero set di dati. e se si tratta di una query a esecuzione prolungata, significa che devi aspettare molto per la prima pagina, quindi attendere molto per tutte le pagine dopo aver premuto ctrl + A. in altre parole, un'ottima soluzione, ma funziona solo la maggior parte delle volte e per query relativamente più veloci o più piccole.
Eran Medan,

Sul conteggio delle file lunghe rimuoverà le tue cose copiate! Non usare questo.
Hash

@Mark Non l'ho mai visto accadere da solo. Ha mantenuto solo le prime 50 file o qualcosa del genere? Se è così c'è una preferenza separata per quello. Copia solo ciò che è attualmente nella griglia, ma se scorri fino alla fine della griglia, SQL Dev recupererà automaticamente più righe, quindi posso vedere come qualcuno potrebbe interpretarlo come un bug.
BQ.

1
Ho provato a farlo su 43K righe di dati e funziona per sempre - opzione di esportazione molto più veloce. Questo è fantastico se hai solo poche righe di dati.
izikandrw,

28

Cordiali saluti, è possibile sostituire il /*csv*/ con altri formati, inclusi /*xml*/e /*html*/. select /*xml*/ * from emprestituisce un documento XML con i risultati della query, ad esempio. Mi sono imbattuto in questo articolo mentre cercavo un modo semplice per restituire xml da una query.


4
/ * insert * / è particolarmente utile.
jeremyjjbrown,

Dove vanno i file?
Anomalia

Ah, non importa, ho controllato la parte "Esegui come script", non rendendomi conto che era distinto dal solito pulsante Esegui.
Anomalia

4

Cordiali saluti a chiunque si imbatta in problemi, c'è un bug nell'esportazione di timestamp CSV che ho appena trascorso alcune ore a lavorare. Alcuni campi che dovevo esportare erano di tipo timestamp. Sembra che l'opzione di esportazione CSV anche nella versione corrente (3.0.04 a partire da questo invio) non riesca a mettere i simboli di raggruppamento attorno a timestamp. Molto frustrante poiché gli spazi nei timestamp hanno rotto la mia importazione. La soluzione migliore che ho trovato è stata scrivere la mia query con un TO_CHAR () su tutti i miei timestamp, che produce l'output corretto, anche se con un po 'più di lavoro. Spero che questo faccia risparmiare tempo a qualcuno o metta Oracle in ballo con la sua prossima uscita.


1
La mia versione 3.0.04 ha ancora un bug in cui si blocca con esportazioni più grandi (la mia è 3K righe). La mia semplice soluzione era usare SQLPLUS invece:
Jim P

Nel mio caso, il tipo di dati spaziali ( docs.oracle.com/cd/B19306_01/appdev.102/b14255/… ) veniva esportato in questo modo (notare le virgole) MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(-122.39096,37.79251,NULL),NULL,NULL)senza essere racchiuso tra virgolette. E sto usando SQL dinamico, quindi non posso TO_CHAR () queste colonne. Eventuali suggerimenti?
The Red Pea,

Anche se sto usando Dynamic SQL e sto solo selezionando *, (e non voglio modificarlo per un'eccezione per una singola colonna SQL di tipi di dati spaziali), forse potrei provare due cose: 1) Utilizzare un COLSEP diverso come '|' o 2) Prima dell'istruzione
The Red Pea,

2

Per eseguire un'esportazione nel sistema locale dallo sviluppatore sql.

Path : C:\Source_Table_Extract\des_loan_due_dtls_src_boaf.csv

    SPOOL "Path where you want to save the file"
    SELECT /*csv*/ * FROM TABLE_NAME;

1

L'esportazione CSV non sfugge ai tuoi dati. Fai attenzione alle stringhe che finiscono \perché il risultato \"apparirà come un escape "e non un \. Quindi hai il numero sbagliato di "e l'intera riga è interrotta.


Probabilmente non è un bug: puoi decidere come sfuggire alle virgolette e il valore predefinito è sfuggire a esso con un altro carattere virgolette, non una barra rovesciata. In tal caso, "foo\"è una stringa tra virgolette perfettamente valida.
Ken Williams,

È abbastanza semplice sostituire ogni ricorrenza di \ con \\, se lo conosci in anticipo. Grazie!
jpaugh,

Sì, abbastanza semplice e probabilmente sbagliato per la maggior parte degli strumenti di importazione CSV.
Wormbo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.