Un script python qui convertit les données Oracle Database en csv

Objectif

Informations de dictionnaire d'Oracle Database, Utilisation de la bibliothèque python (cx_Oracle) Il s'agit d'un script d'acquisition de données à usage général.

Pourquoi?

Je pense qu'il est courant de l'obtenir avec la bobine de sqlplus. Après tout, il est tard, n'est-ce pas? N'est-il pas gênant d'écrire un script en fonction des données acquises à chaque fois? C'est bien de l'obtenir, mais le format est cliquetis et vous le récupérez souvent, non?

Script créé

staticinfo.py


#!/usr/bin/python
import cx_Oracle
import os
import sys
import csv

USER='******'            #Veuillez changer en fonction de l'environnement(system)
PASS='********'          #Veuillez changer en fonction de l'environnement(manager)
HOST='***.***.***.***'   #Veuillez changer en fonction de l'environnement(192.168.0.1)
PORT='****'              #Veuillez changer en fonction de l'environnement(1521)
SERVICE_NAME='****'      #Veuillez changer en fonction de l'environnement(ORCL)
FETCH_ROWS=100           #Veuillez changer en fonction de l'environnement

argv = sys.argv
argc = len(argv)
if argc != 2:
  print('Usage: %s filename or tablename' % argv[0])
  quit()

print("execution..." + argv[1])

p1 = argv[1]
name, ext = os.path.splitext(p1)

if ext == ".sql":
  #Obtenir une instruction SQL
  f = open(p1)
  sql = f.read()
  f.close()

  out_file_name = name + '.csv'
else:
  #Création d'une instruction SQL
  sql = 'select * from %s' % p1

  out_file_name = p1.replace('$','_') + '.csv'

with cx_Oracle.connect(USER,PASS,HOST+':'+PORT+'/'+SERVICE_NAME) as conn:
  #Exécution de l'instruction SQL
  cur_detail = conn.cursor()
  cur_detail.execute(sql)

  #Obtenir le nom de la colonne
  csv_header = [str[0] for str in cur_detail.description]

  #Obtenez la partie données
  f = open(out_file_name, 'w')
  writer = csv.writer(f, lineterminator='\n', quoting=csv.QUOTE_ALL)
  writer.writerow(csv_header)
  while 1:
    csv_detail = cur_detail.fetchmany(FETCH_ROWS)
    if len(csv_detail) == 0:
      break
    writer.writerows(csv_detail)
  cur_detail.close()

Méthode d'exécution

$ python staticinfo.py dba_users

-Il est nécessaire de spécifier des variables d'environnement (ORACLE_HOME / LD_LIBRARY_PATH), etc. -Le fichier cible (dba_users.csv) est créé dans le répertoire courant. -Si vous préparez un script à l'avance, il est possible de convertir le résultat du script en csv.

Parce que c'est gênant

Créez un shell comme celui ci-dessous et affichez-le tout à la fois.

staticinfo.sh


#!/bin/sh
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2/client_1
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

python staticinfo.py dba_users
python staticinfo.py dba_profiles
python staticinfo.py dba_data_files
python staticinfo.py dba_temp_files
python staticinfo.py dba_tablespaces
python staticinfo.py dba_segments
python staticinfo.py dba_roles
python staticinfo.py dba_role_privs
python staticinfo.py dba_sys_privs
python staticinfo.py dba_tab_privs
python staticinfo.py gv\$database
python staticinfo.py gv\$instance
python staticinfo.py gv\$log
python staticinfo.py gv\$logfile
python staticinfo.py gv\$controlfile
python staticinfo.py gv\$parameter2

python staticinfo.py 01_tablespace_capacity.sql
python staticinfo.py 02_datafile_capacity.sql
python staticinfo.py 03_tempfile_capacity.sql

finalement

Je voulais le rendre générique, donc je voulais particulièrement exécuter le fichier SQL et obtenir automatiquement les noms de colonnes. Bien entendu, il est également possible d'acquérir des données utilisateur. En fonction de la personnalisation, je pense que c'est devenu un script avec du potentiel.

Recommended Posts

Un script python qui convertit les données Oracle Database en csv
Script Python qui génère tous les enregistrements de la table Oracle dans un fichier CSV
[Python] Une bibliothèque pratique qui convertit les kanji en hiragana
Script Python qui crée un fichier JSON à partir d'un fichier CSV
Programme Python qui convertit les données ical en texte
Un script Python qui enregistre une image de presse-papiers (GTK) dans un fichier.
[Python] Comment stocker un fichier csv en tant que données de tableau à une dimension
Comment exécuter des scripts Maya Python
J'ai créé une application Web en Python qui convertit Markdown en HTML
Comment lire un fichier CSV avec Python 2/3
"Kit Python" qui appelle des scripts Python depuis Swift
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Script Python qui lit les fichiers SQL, exécute BigQuery et enregistre le csv
[Python3] Connexion à Oracle Database et exécution de SQL [cx_Oracle]
Un mémorandum pour exécuter un script python dans un fichier bat
Que contient cette variable (lorsque le script Python est en cours d'exécution)
[Python] Comment écrire une docstring conforme à PEP8
Un serveur qui fait écho aux données POSTées avec flask / python
Comment enregistrer une table récupérée par python en csv
Script Python qui explore le flux RSS du statut Azure et le publie sur Hipchat
Un script python qui importe un fichier csv daté dans BigQuery en tant que table de partition de temps
Programme qui résume les données csv de l’historique des transactions de l’action SBI Securities [Python3]
Un script python qui souhaite utiliser l'heure de démarrage / fin de Mac pour la gestion des présences
Un mémo qui lit les données de dashDB avec Python et Spark
Publication d'une bibliothèque qui masque les données de caractères dans les images Python
[Python] Création d'un outil GUI qui traite automatiquement le CSV des données d'élévation de température dans Excel
Comment exécuter un programme Python à partir d'un script shell
[Linux] Copie des données de Linux vers Windows avec un script shell
Création d'un script Python prenant en charge l'API e-Stat (ver.2)
Cinq types de données Python utiles faciles à oublier
Créer un environnement Python et transférer des données vers le serveur
J'ai essayé de créer un générateur qui génère une classe conteneur C # à partir de CSV avec Python
Code Python pour l'écriture de données CSV dans le stockage d'objets DSX
Écrire en csv avec Python
Script Python qui va de la recherche Google à l'enregistrement de la page de résultats de recherche à la fois
Comment écrire une classe méta qui prend en charge à la fois python2 et python3
[Introduction à Python] Combinaison des données Nikkei Average et NY Dow CSV
Script Python qui stocke 15 ans de données de jeu MLB dans MySQL en 10 minutes (Baseball Hack!)
Programme Python qui agrège l'utilisation du temps à partir des données icalendar
Script Python qui peut vérifier l'état du serveur à partir du navigateur
Script Python qui compare le contenu de deux répertoires
[Python] Une histoire qui semblait tomber dans un piège à contourner
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
Comment passer des arguments à un script Python dans SPSS Modeler Batch
Créez un script shell pour exécuter le fichier python plusieurs fois
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai écrit une fonction pour charger le script d'extension Git en Python
J'ai écrit un script pour extraire les liens de pages Web en Python
Un script qui utilise boto pour télécharger un dossier spécifié sur Amason S3
Comment mettre à jour une source de données de classeur packagée Tableau à l'aide de Python
Un codec Python spécial qui semble savoir mais ne sait pas
[Python] Lire un fichier csv avec une grande taille de données à l'aide d'un générateur
Création d'un service qui vous permet de rechercher des données J-League
Un script python qui supprime les fichiers ._DS_Store et ._ * créés sur Mac
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
[Good By Excel] script python pour générer sql pour convertir csv en table
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche