Je crée une application Web Oracle, mais je l'ai fait pour sortir facilement des données pour confirmation et sauvegarde.
OS:Windows 8.1 Python:2.7.10 x64 Modules requis: cx_Oracle, xlwt
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 )
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.
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
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.
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