Respuestas:
Arun
ahora que sqlcl está disponible en Oracle SQL Developer 4.1 EA2 (4.1.0.18.37) , puede usarlo como el antiguo y famoso sqlplus. sqlcl tiene una configuración de formato de salida para csv
set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off
para más información sobre el pago de sqlcl en el blog de Kris
antes de que sqlcl fuera más fácil, esto era usar APEX y exportar el informe a csv. En el viejo sqlplus simple puedes hacer esto 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
Esto funciona mejor si los resultados se escriben en un servidor de aplicaciones o cliente. Si tienen que escribirse en el servidor de la base de datos, utl_file podría ser una mejor opción.
Ronald
Debería mirar el paquete UTL_FILE integrado . Hay varias formas de usarlo.
Puede escribir cualquier cantidad de procedimientos en paquetes que usen el paquete UTL_FILE para escribir en cualquier cantidad de archivos. Estos procedimientos se pueden invocar desde casi cualquier aplicación, incluido SQL * Plus.
Puede escribir un script PL / SQL para hacer el mismo trabajo y llamar al script desde la línea de comando SQL * Plus especificando @scriptname en la línea de comando.
Puede pegar un bloque usando UTL_FILE directamente en SQL * Plus, pero esto solo debe usarse para exportaciones de una sola vez e incluso entonces podría no ser la mejor ruta.
En su forma más simple, una exportación de archivos usando UTL_FILE estaría compuesta por una llamada a FOPEN , una o más llamadas a PUT_LINE y una llamada a FCLOSE .
Si el rendimiento es una preocupación, es posible que desee considerar las herramientas de los proveedores.
He evaluado herramientas de BMC, Wisdomforce, CoSort, DBCrane. Todos son significativamente más rápidos que spool, utl_file o table externo. Estamos usando DBCrane porque mi jefe no quería gastar demasiado en licencias.
Puede usar Python y el módulo cx_Oracle para extraer datos al disco en formato CSV.
Así es como te conectas a Oracle usando cx_Oracle:
constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()
Después de la búsqueda de datos, puede recorrer la lista de Python y guardar los datos en 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')
Usé este enfoque cuando escribí TableHunter-For-Oracle