Risposte:
Arun,
ora che sqlcl è disponibile da Oracle SQL Developer 4.1 EA2 (4.1.0.18.37) puoi usarlo come il vecchio e famoso sqlplus. sqlcl ha un'impostazione del formato di output per csv
set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off
per maggiori informazioni sul checkout sqlcl blog di Kris
prima che sqlcl fosse il più semplice per questo era usare APEX ed esportare il rapporto in CSV. Con il semplice vecchio sqlplus puoi farlo usando
set lines 9999 -- the appropriate size
set head off -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off
Funziona meglio se i risultati devono essere scritti su un server delle applicazioni o un client. Se devono essere scritti sul server di database, utl_file potrebbe essere un'opzione migliore.
Ronald.
Dovresti guardare il pacchetto UTL_FILE integrato . Esistono diversi modi per utilizzarlo.
È possibile scrivere un numero qualsiasi di procedure in pacchetti che utilizzano il pacchetto UTL_FILE per scrivere in qualsiasi numero di file. Queste procedure possono quindi essere richiamate da quasi tutte le applicazioni incluso SQL * Plus.
È possibile scrivere uno script PL / SQL per fare lo stesso lavoro e chiamare lo script dalla stessa riga comandi SQL * Plus specificando @scriptname sulla riga comandi.
È possibile incollare un blocco utilizzando UTL_FILE direttamente in SQL * Plus, ma questo dovrebbe essere utilizzato solo per le esportazioni una volta e anche in questo caso potrebbe non essere il percorso migliore.
Nella loro più semplice un'esportazione di file usando UTL_FILE sarebbe composta da una chiamata a FOPEN , una o più chiamate a PUT_LINE e una chiamata a FCLOSE .
Se le prestazioni rappresentano un problema, è consigliabile prendere in considerazione gli strumenti dei fornitori.
Ho valutato strumenti da BMC, Wisdomforce, CoSort, DBCrane. Sono tutti significativamente più veloci di spool, utl_file o tabella esterna. Stiamo usando DBCrane perché il mio capo non voleva spendere troppo in licenza.
È possibile utilizzare i moduli Python e cx_Oracle per estrarre i dati su disco in formato CSV.
Ecco come ti connetti a Oracle usando cx_Oracle:
constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()
Dopo il recupero dei dati è possibile scorrere l'elenco Python e salvare i dati in formato CSV.
for i, chunk in enumerate(chunks(cur)):
f_out.write('\n'.join([column_delimiter.join(row[0]) for row in chunk]))
f_out.write('\n')
Ho usato questo approccio quando ho scritto TableHunter-For-Oracle