Necesito para exportar una tabla de oracle a un archivo csv/excel (formato de archivo junto con los encabezados de columna). Una solución a través de cx_oracle o a través de sqlplus bienvenida.

Código de Python desde el comentario:

con = cx.connect() 
cur = con.cursor() 
printer = cur.execute(sqlcode) 
con.commit() 
El csv módulo es fácil de usar. Por favor enviar el código que he escrito hasta ahora.
con = cx.connect() cur = con.cursor() de la impresora = cur.ejecutar(sqlcode) con.commit()
Que el código no hace nada con el «impresora» (debe ser llamado por ejemplo, query_result). Usted no necesita la commit() si es una consulta de solo lectura. Obtén tu código a la etapa donde usted puede imprimir los resultados de la consulta a stdout. Luego de hacer una pregunta sobre el bastante independiente de la tarea de crear un csv, etc archivo.
no publiques código en un comentario. Por favor, actualización la pregunta con el código.

OriginalEl autor Khwaishien | 2011-04-14

3 Comentarios

  1. 12

    quizás, utilizar csv (módulo de 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, desenrolle el fetchall() en un bucle.

    Happy trails!

    Siempre abrir archivos csv con Python2 en modo binario. Con Python3, uso newline=''.
    Buen punto, el de Juan, agregó. (Acabo de tomar un vistazo a bugs.python.org/issue4847#msg82661)
    También, sería posible extraer los títulos de la tabla junto con él?
    echa un vistazo en la posición del cursor.descripción, en la edición anterior, o simplemente escribir los encabezados como una tupla – escritor.writerow([‘heading1’, ‘encabezado 2’, …, ])

    OriginalEl autor jsw

Dejar respuesta

Please enter your comment!
Please enter your name here