2011-04-14 29 views
8

Necesito exportar una tabla de Oracle a un formato de archivo csv/excel (junto con los encabezados de columna). Una solución a través de cx_oracle o mediante sqlplus welcome.Cómo exportar una tabla al formato csv o excel

código Python del comentario:

con = cx.connect() 
cur = con.cursor() 
printer = cur.execute(sqlcode) 
con.commit() 
+0

El módulo 'csv' es fácil de usar. Por favor, publique el código que ha escrito hasta ahora. –

+0

con = cx.connect() cur = con.cursor() printer = cur.execute (sqlcode) con.commit() – Khwaishien

+1

Ese código no hace nada con "impresora" (se debe llamar, por ejemplo, query_result). No necesita 'commit()' si se trata de una consulta de solo lectura. Obtenga su código en la etapa donde puede imprimir los resultados de la consulta a stdout. Luego, haga una pregunta sobre la tarea bastante independiente de crear un archivo csv etc. –

Respuesta

11

tal vez utilizar el módulo csv (de la biblioteca estándar):

import csv 
cursor = connection.cursor() # assuming you know how to connect to your oracle db 
cursor.execute('select * from table_you_want_to_turn_to_csv') 
with open('output_file.csv', 'wb') as fout: 
    writer = csv.writer(fout) 
    writer.writerow([ i[0] for i in cursor.description ]) # heading row 
    writer.writerows(cursor.fetchall()) 

Si usted tiene un montón de datos, desenrollar el fetchall() en un bucle.

Happy trails!

+3

Siempre abra archivos csv con Python2 en modo binario. Con Python3, use 'newline = '''. –

+0

Buen punto John, agregado. (Acabo de echar un vistazo a http://bugs.python.org/issue4847#msg82661) – jsw

+0

Además, ¿sería posible extraer los títulos de la tabla junto con él? – Khwaishien

2

Para crear el archivo XLS, utilice xlwt módulo del proyecto python-excel.

1

Para una solución que no sea de Python, Tom Kyte tiene algunas secuencias de comandos excelentes para generating CSV files usando PL/SQL (UTL_FILE), SQL * Plus y Pro * C.

Cuestiones relacionadas