Reverse Engineering, Oracle 10g

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Reverse Engineering, Oracle 10g

Beitragvon Hyperion » Sonntag 22. Februar 2009, 19:45

Hallo zusammen,

ist zwar eine DB-Frage, hat aber zunächst nichts mit Python zu tun, daher dieses Forum!

Also: Ich habe eine relativ komplexe Datenbank, von der ich die genaue Struktur nicht kenne (und ich habe def. keine Möglichkeit da ran zu kommen).

Ich kenne aber generell die Zusammenhänge der Daten, die ich dort herauslesen will (Es gibt eine Applikation, die diese DB als Backend nutzt, die hat aber keine API hat und ist closed source ist).

Leider wird der Zusammenhang von Tabellen nicht unbedingt durch den Namen deutlich. Ich kenne aber natürlich einige markante Daten, die ich im System eingepflegt habe.

Nun kommt meine Frage: Gibt es ein Tool, mit welchem ich über alle Tabellen in allen dafür vom Datentyp her in Frage kommenden Spalten nach einem speziellen Datum suchen kann und mir als Ergebnis dann die Tabelle und Spalte angezeigt wird, in der das drin steht?

Generell speichern DBs ja ihre eigenen Tabellen und deren Attribute nebst Datentypen in eigenen Tabellen. Diese könnte man dann abfragen und über die Tabellen iterieren in dieser Art:

Code: Alles auswählen

# Datentyp des Attributes
type = varchar
# Datum, nach dem gesucht werden soll
search_string = "file1.stp"

for table in sys_tables:
    attributes = get_valid_attributes(type)
    q = "select * from %s where" % table
    # in Frage kommende Spalten mit dem Suchstring abgleichen und
    # per or verknüpfen
    for attr in attributes:
        q += "%s like %s or " % (attr, search_string)
    query.execute(q)

Wäre sicherlich so umzusetzen, aber würde schon wieder einiges an Zeit kosten.

Vielleicht weiß hier ja jemand Rat und hat eine fertige Lösung parat :-)
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Sonntag 22. Februar 2009, 19:59

Müsste mit sqlalchemy/sqlsoup relativ einfach gehen ;)

- Jonas
My Website - 29a.ch
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Sonntag 22. Februar 2009, 20:48

veers hat geschrieben:Müsste mit sqlalchemy/sqlsoup relativ einfach gehen ;)

- Jonas

sqlsoup sieht ja recht interessant aus :-) Danke, ich werd mir mal was überlegen ... auch wenn ich das jetzt per Hand gelöst habe glaub ich. Aber ich denke, es wird nicht das lezuze Mal gewesen sein ...

Wäre ja bei einem guten DB-Desgin mit dem Ausnutzen von FKs alles nicht so wild, aber bei dieser kommerziellen Software scheint so etwas noch nicht angekommen zu sein - dabei ist die Firma just letztes Jahr von Oracle gekauft worden :roll:

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder