Ein Python-Skript, das Oracle-Datenbankdaten in CSV konvertiert

Zweck

Wörterbuchinformationen der Oracle-Datenbank, Verwenden der Python-Bibliothek (cx_Oracle) Dies ist ein universelles Datenerfassungsskript.

Warum?

Ich denke, es ist üblich, es mit der Spule von sqlplus zu bekommen. Es ist doch spät, oder? Ist es nicht mühsam, jedes Mal ein Skript gemäß den erfassten Daten zu schreiben? Es ist gut, es zu bekommen, aber das Format klappert und man bekommt es oft wieder, oder?

Skript erstellt

staticinfo.py


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

USER='******'            #Bitte ändern Sie je nach Umgebung(system)
PASS='********'          #Bitte ändern Sie je nach Umgebung(manager)
HOST='***.***.***.***'   #Bitte ändern Sie je nach Umgebung(192.168.0.1)
PORT='****'              #Bitte ändern Sie je nach Umgebung(1521)
SERVICE_NAME='****'      #Bitte ändern Sie je nach Umgebung(ORCL)
FETCH_ROWS=100           #Bitte ändern Sie je nach Umgebung

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":
  #SQL-Anweisungserfassung
  f = open(p1)
  sql = f.read()
  f.close()

  out_file_name = name + '.csv'
else:
  #Erstellung von SQL-Anweisungen
  sql = 'select * from %s' % p1

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

with cx_Oracle.connect(USER,PASS,HOST+':'+PORT+'/'+SERVICE_NAME) as conn:
  #Ausführung von SQL-Anweisungen
  cur_detail = conn.cursor()
  cur_detail.execute(sql)

  #Spaltennamen abrufen
  csv_header = [str[0] for str in cur_detail.description]

  #Holen Sie sich den Datenteil
  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()

Ausführungsmethode

$ python staticinfo.py dba_users

-Es ist erforderlich, Umgebungsvariablen (ORACLE_HOME / LD_LIBRARY_PATH) usw. anzugeben. -Die Zieldatei (dba_users.csv) wird im aktuellen Verzeichnis erstellt. -Wenn Sie ein Skript im Voraus vorbereiten, können Sie das Ergebnis des Skripts in CSV konvertieren.

Weil es lästig ist

Erstellen Sie eine Shell wie die folgende und geben Sie alles auf einmal aus.

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

Schließlich

Ich wollte es generisch machen, daher waren die Punkte, die mir besonders wichtig waren, die Ausführung der SQL-Datei und die automatische Erfassung von Spaltennamen. Natürlich ist es auch möglich, Benutzerdaten zu erfassen. Abhängig von der Anpassung denke ich, dass es ein Skript mit Potenzial geworden ist.

Recommended Posts

Ein Python-Skript, das Oracle-Datenbankdaten in CSV konvertiert
Python-Skript, das alle Datensätze der Oracle-Tabelle in eine CSV-Datei ausgibt
[Python] Eine praktische Bibliothek, die Kanji in Hiragana konvertiert
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
Python-Programm, das ical-Daten in Text konvertiert
Ein Python-Skript, das ein GTK-Bild (Clipboard) in einer Datei speichert.
[Python] Speichern einer CSV-Datei als eindimensionale Array-Daten
So führen Sie Maya Python-Skripte aus
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Lesen einer CSV-Datei mit Python 2/3
"Python Kit", das Python-Skripte von Swift aufruft
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Python-Skript, das SQL-Dateien liest, BigQuery ausführt und CSV speichert
[Python3] Herstellen einer Verbindung zur Oracle-Datenbank und Ausführen von SQL [cx_Oracle]
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
Ein Server, der POST-Daten mit flask / python wiedergibt
So speichern Sie eine von Python gekratzte Tabelle in CSV
Python-Skript, das das Azure-Status-RSS crawlt und an Hipchat sendet
Ein Python-Skript, das eine datierte CSV-Datei als Zeitpartitionstabelle in BigQuery importiert
Programm, das die CSV-Daten der Transaktionshistorie der SBI Securities-Aktie zusammenfasst [Python3]
Ein Python-Skript, das die Start- / Endzeit des Mac für die Anwesenheitsverwaltung verwenden möchte
Ein Memo, das mit Python & Spark Daten aus dashDB liest
Veröffentlichung einer Bibliothek, die Zeichendaten in Python-Bildern verbirgt
[Python] Erstellen eines GUI-Tools, das die CSV von Temperaturanstiegsdaten in Excel automatisch verarbeitet
So führen Sie ein Python-Programm in einem Shell-Skript aus
[Linux] Kopieren Sie Daten mit einem Shell-Skript von Linux nach Windows
Erstellen eines Python-Skripts, das die e-Stat-API unterstützt (Version 2)
Fünf nützliche Python-Datentypen, die leicht zu vergessen sind
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert
Python-Code zum Schreiben von CSV-Daten in den DSX-Objektspeicher
Schreiben Sie mit Python in csv
Python-Skript, das von der Google-Suche zum sofortigen Speichern der Suchergebnisseite führt
So schreiben Sie eine Meta-Klasse, die sowohl Python2 als auch Python3 unterstützt
[Einführung in Python] Kombinieren Sie Nikkei-Durchschnitts- und NY Dow-CSV-Daten
Python-Skript, das MLB-Spieldaten im Wert von 15 Jahren in 10 Minuten in MySQL speichert (Baseball Hack!)
Python-Programm, das die Zeitnutzung aus icalendar-Daten aggregiert
Python-Skript, das den Status des Servers über den Browser überprüfen kann
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
[Python] Eine Geschichte, die in eine Rundungsfalle zu geraten schien
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
Erstellen Sie ein Shell-Skript, um die Python-Datei mehrmals auszuführen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
Ein Skript, das Boto verwendet, um einen bestimmten Ordner in Amason S3 hochzuladen
So aktualisieren Sie eine in Tableau gepackte Arbeitsmappen-Datenquelle mit Python
Python-Spezialcodec, der zu wissen scheint, aber nicht weiß
[Python] Lesen Sie eine CSV-Datei mit großen Datenmengen mithilfe eines Generators
Erstellt einen Dienst, mit dem Sie J-League-Daten durchsuchen können
Ein Python-Skript, das auf dem Mac erstellte ._DS_Store- und ._ * -Dateien löscht
[Python] Ein Hinweis, dass ich das Verhalten von matplotlib.pyplot zu verstehen begann
[Good By Excel] Python-Skript zum Generieren von SQL zum Konvertieren von CSV in Tabelle
[Python] Ein Programm, das den Inhalt der Liste nach links dreht