Seite 1 von 1

Reverse Engineering, Oracle 10g

Verfasst: Sonntag 22. Februar 2009, 19:45
von Hyperion
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 :-)

Verfasst: Sonntag 22. Februar 2009, 19:59
von veers
Müsste mit sqlalchemy/sqlsoup relativ einfach gehen ;)

- Jonas

Verfasst: Sonntag 22. Februar 2009, 20:48
von Hyperion
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: