Sortie de la table spécifiée de la base de données Oracle en Python vers Excel pour chaque fichier

Raison de la fabrication

Je crée une application Web Oracle, mais je l'ai fait pour sortir facilement des données pour confirmation et sauvegarde.

Conditions préalables

OS:Windows 8.1 Python:2.7.10 x64 Modules requis: cx_Oracle, xlwt

code

output_oracle_to_excel.py


# -*- coding: utf-8 -*-

from __future__ import unicode_literals

import os,sys
import csv
import codecs
import numbers
import unittest
import cStringIO
import itertools

import cx_Oracle

import xlwt

from itertools import chain

os.environ["NLS_LANG"] = "JAPANESE_JAPAN.AL32UTF8"

ORACLE_CONF = {
	'ID'		: 'SCHEMENAME'
	, 'PASS'	: 'SCHEMEPASSWORD'
	, 'HOST'	: '192.168.1.5'
	, 'SID'		: 'XE'
}

def fetchTables( table_name ):
	output_file_name = 'DB_to_Excel_' + HOST + '_' + ID + '_' + table_name + '.xls'

	wb = xlwt.Workbook()				#Créer un nouveau classeur
	ws = wb.add_sheet( table_name )		#Créer une nouvelle feuille de calcul

	column_name_sql = 'select column_name from user_tab_columns where table_name = :tbl'
	cur_columns = conn.cursor()
	cur_columns.execute(column_name_sql, tbl=table_name)
	columns = cur_columns.fetchall()
	cur_columns.close()
	columns = tuple(chain.from_iterable(columns))

	data_sql = 'select * from "%s"' % table_name
	cur_data = conn.cursor()
	cur_data.execute(data_sql)

	nRow = 0
	nLine = 0
	for value in columns:
		ws.write(nRow, nLine, value) 
		nLine = nLine + 1

	row = cur_data.fetchone()

	nRow	= 1
	while row != None:										#Si vous avez les données
		nLine = 0
		for value in row:									#Obtenir une boucle d'élément
			if isinstance( value , cx_Oracle.LOB ):
				value = value.read()
			ws.write(nRow, nLine, value)					#Écrire dans Excel
			nLine = nLine + 1
		nRow = nRow + 1
		row = cur_data.fetchone()							#Vers le prochain enregistrement

	cur_data.close()
	wb.save( output_file_name )							#Enregistrer le fichier Excel


def fetchAllTables( conn ):
	str_sql = "select TABLE_NAME from user_tables where TABLE_NAME LIKE '%USER%' or TABLE_NAME LIKE '%SHOP%' ORDER BY TABLE_NAME"
	cur_tables = conn.cursor()
	cur_tables.execute( str_sql )
	rows = cur_tables.fetchall()
	i = 0
	lst_table = list()
	for row in rows:
		print row[0]
		lst_table.append( row[0] )
		fetchTables(lst_table[i])
		i = i + 1

conn = cx_Oracle.connect( ORACLE_CONF['ID'] , ORACLE_CONF['PASS'] , ORACLE_CONF['HOST'] + '/' + ORACLE_CONF['SID'] )

fetchAllTables( conn )

Commentaire

Code de caractère Oracle

os.environ["NLS_LANG"] = "JAPANESE_JAPAN.AL32UTF8" Il est spécifié par. Récemment, le nombre d'UTF-8 a augmenté, donc je pense que l'UTF-8 peut être utilisé tel quel.

Informations de connexion

ORACLE_CONF = { 'ID' : 'SCHEMENAME' , 'PASS' : 'SCHEMEPASSWORD' , 'HOST' : '192.168.1.5' , 'SID' : 'XE' } Veuillez modifier le cas échéant en fonction de votre propre environnement

Nom du fichier de sortie

def fetchTables( table_name ): output_file_name = 'DB_to_Excel_' + HOST + '' + ID + '' + table_name + '.xls'

Le nom du fichier est généré dans la partie de. Par exemple, si la table acquise avec HOST: 192.168.1.5 et ID: SCHEMENAME est "TEST_USER", DB_to_Excel_192.168.1.5_SCHEMENAME_TEST_USER.xls Le résultat de la sortie est enregistré dans le fichier.

Lors du rétrécissement de la table de sortie ou non

def fetchAllTables( conn ): str_sql = "select TABLE_NAME from user_tables where TABLE_NAME LIKE '%USER%' or TABLE_NAME LIKE '%SHOP%' ORDER BY TABLE_NAME" C'est possible si vous modifiez la clause WHERE de.

Recommended Posts

Sortie de la table spécifiée de la base de données Oracle en Python vers Excel pour chaque fichier
Changer la destination de sortie standard en un fichier en Python
[Python] Comment générer une table pandas dans un fichier Excel
Google recherche la chaîne sur la dernière ligne du fichier en Python
Convertir un fichier Excel en texte en Python à des fins de comparaison
Python> bibliothèque> os> os.walk ()> Obtenir la structure du répertoire / l'implémentation pour obtenir chaque chemin de fichier dans le répertoire spécifié
Comment définir la résolution de sortie pour chaque image clé dans Blender
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
[Python] Lire la ligne spécifiée dans le fichier
Ouvrez un fichier Excel en Python et coloriez la carte du Japon
Script Python qui génère tous les enregistrements de la table Oracle dans un fichier CSV
Changer le module à charger pour chaque environnement d'exécution en Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Sortie du nombre de cœurs de processeur en Python
Faites correspondre la distribution de chaque groupe en Python
Sortie sous la forme d'un tableau python
Évaluation de la vitesse de sortie du fichier CSV en Python
Mauvais message pour utiliser "animeface-2009" en Python et implémentation de la fonction pour générer un fichier XML au format PASCAL VOC
Différentes façons de lire la dernière ligne d'un fichier csv en Python
[Bash] Passez le contenu du fichier aux variables pour chaque colonne avec while read
Comparez la somme de chaque élément dans deux listes avec la valeur spécifiée en Python
J'ai créé un script pour vérifier si l'anglais est entré dans la position spécifiée du fichier JSON en Python.
Modèle de script python pour lire le contenu du fichier
Comment obtenir le nombre de chiffres en Python
[python] option pour désactiver la sortie de click.progressbar
[Python] Comment afficher les valeurs de liste dans l'ordre
Pour faire l'équivalent de Ruby ObjectSpace._id2ref en Python
Utilisez Pandas pour écrire uniquement les lignes spécifiées du bloc de données dans le fichier Excel
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)
Il est facile d'exécuter SQL avec Python et de générer le résultat dans Excel
Sortie "Dessiner fougère par programmation" dans le processus de dessin en Python
Créer un tableau de multiplication de chaque élément dans une feuille de calcul (Python)
Manipulez le presse-papiers en Python et collez le tableau dans Excel
Obtenez le nombre d'occurrences pour chaque élément de la liste
[Python] Comment changer le fichier EXCEL enregistré dans xlsb en xlsx
Obtenez l'index de chaque élément de la matrice de confusion en Python
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Comment trouver la somme / somme cumulée pour chaque groupe à l'aide de DataFrame dans Spark [version Python]
Exporter la liste de clés incluse dans S3 Bucket dans un fichier
Comment déterminer l'existence d'un élément sélénium en Python
Comment modifier le niveau de journalisation d'Azure SDK pour Python
Envelopper (partie de) la bibliothèque AtCoder en Cython pour une utilisation en Python
Comment connaître la structure interne d'un objet en Python
Enregistrez le fichier binaire en Python
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
Comment vérifier la taille de la mémoire d'une variable en Python
Sortie vers un fichier csv avec Python
Redimensionner automatiquement les captures d'écran de l'App Store pour chaque écran en Python
Mettre le processus en veille pendant un certain temps (secondes) ou plus en Python
Je veux sortir le début du mois prochain avec Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
N'hésitez pas à changer l'étiquette de légende avec Seaborn en python
J'ai écrit le code pour écrire le code Brainf * ck en python
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
J'ai essayé de résumer le contenu de chaque paquet enregistré par Python pip en une seule ligne