J'ai besoin d'exporter une table Oracle sur un format de fichier CSV / Excel (ainsi que les en-têtes de colonne). Une solution via cx_oracle ou via SQLPLUS Bienvenue.
code Python du commentaire: p>
3 Réponses :
Peut-être utiliser le module CSV (à partir de la bibliothèque standard):
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())
Toujours ouvrir les fichiers CSV avec Python2 en mode binaire. Avec Python3, utilisez newline = '' code>.
Bon point Jean, ajouté. (Je viens de regarder Bugs.python.org/issue4847#msg82661 )
En outre, serait-il possible d'extraire les titres de table avec elle?
Jetez un coup d'œil au curseur.description, dans Modifier ci-dessus ou écrivez simplement les titres comme un tuple - écrivain.writerow (["Heading1 '," Heading2 ", ...,])
Pour un grand nombre de lignes, Tune curseur. Arraysisize pour obtenir des performances optimales.
Pour une solution non python, Tom Kyte a d'excellents scripts pour générer des fichiers CSV < / a> Utilisation Pl / SQL (UTL_FILE), SQL * Plus et PRO * C. P>
Le module
csv code> est facile à utiliser. S'il vous plaît poster le code que vous avez écrit jusqu'à présent.
Con = CX.Connect () Cur = Con.Cursor () Imprimante = CUR.EXECTE (SQLCODE) CONCOMMIT ()
Ce code ne fait rien avec "imprimante" (devrait être appelé E.G. Query_Result). Vous n'avez pas besoin du
commit () code> s'il s'agit d'une requête en lecture seule. Obtenez votre code à la scène où vous pouvez imprimer les résultats de la requête à Stdout. Ensuite, posez une question sur la tâche assez indépendante de créer un fichier CSV etc.
Ne postez pas de code dans un commentaire. Veuillez Mettre à jour B> la question avec votre code.