Announcement

Collapse
No announcement yet.

Prozedur automatisch lesen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Prozedur automatisch lesen?

    (English Version below)

    Hallo zusammen,
    vielleicht ist es eine wirklich blöde Idee, vielleicht gibt es ein Tool, vielleicht kann ich es selbst entwickeln, vielleicht gibt es zumindest gute Ideen ...
    Ich bin auf der Suche nach einer Automatisierung des folgenden Problems:
    Ich habe (MSSQL) Prozeduren, die aus einer (MSSQL) Datenbank Tabellen und Views auslesen und (zum Teil nach Berechnungen etc.) in eine (Oracle) Datenbank schreiben.
    Problem: beide Datenbanken haben unterschiedliche Tabellen und Spaltenstrukturen wie auch Namen.
    Ziel wäre es automatisiert aus zu lesen von welcher Tabelle/Spalte in welche andere Tabelle/Spalte geschrieben wird.
    Es gibt schon eine eigene Tabelle die das dar stellt, leider ist die allerdings wenig zu gebrauchen da dort einfach Großteiles falsche Tabellen/Spalten zugeordnet wurden.
    Der Aufwand alles händisch nach zu kontrollieren ist halt relativ groß bis fast unmöglich (Zeit, Aufwand, Größe und gelegentliche Veränderungen).
    Behelfen würde ich mri am liebsten mit SQL (TSQL/PLSQL) oder Java wäre noch recht einfach möglich. Vielleicht gibt es ja auch schon etwas womit ich zumindest die Ansätze lösen kann!?
    Für alle Tips und Anregungen bin ich dankbar )!
    LG und lieben Dank im Voraus!!!!!

    Hi there,
    maybe it's a really stupid idea , maybe there is a tool , maybe I can develop itself, at least maybe there are good ideas ...
    I am looking for an automation of the following problem :
    I have (MSSQL ) procedures to select from a (MSSQL ) database tables and views and write ( partly by calculations, etc. ) in a (Oracle) database.
    Problem: both databases have different structures as well as tables and columns names.
    The aim would be to read automated from which table / column in which other table / column is written.
    There is already a separate table that represents . Unfortunately , however, can not use because there were assigned to the wrong tables / columns.
    The effort to control manually 's just great to almost impossible ( time, effort , size, and occasional changes ) .
    Solutions I would most like in SQL (TSQL / PLSQL ), or Java would be quite easy. Perhaps there is also something which I can solve the approaches ?
    I am grateful for all the tips and suggestions ) !
    Best regards and many thanks in advance ! !!

  • #2
    Vielleicht den Code dazu aufräumen so dass man ihn lesen kann. Vielleicht auch eine kleines konfigurierbares Framework bauen was diesen Job erledigt. Die Konfiguration wäre dann die Dokumentation was wohin kopiert wird. Ich persönlich bin auch kein großer Fan von zu viel Logik in der Datenbank. Klar mag das manchmal aus Performancegründen nicht anders gehen, aber auch dann würde ich tatsächlich nur den Teil des Codes in der DB laufen lassen der wirklich performancekritisch ist.

    Typischerweise ist das eigentlich eine Aufgabe für ein ETL/ELT Tool. Ich persönlich habe aber noch keines gefunden was mir wirklich gefällt und was ich Code vorgezogen hätte.

    Comment


    • #3
      Es gibt sicher eine Menge Tools, die sowas machen. Auf MSSQL Seite kenne ich mich kaum aus.
      Mein Ziel wäre es serverseitig via SP/Views zu machen. Das Ganze hängt allerdings stark von der verfügbaren Connectivität ab.
      Auf Oracle Seite gibt es Heterogenous Services, die den direkten Zugriff auf Fremd RDBMS via DBLink erlauben.
      Auf MSSQL Seite wird das glaub ich durch die Einbindung von OLE DB Providern im SQL Server erreicht.

      Das Verschieben / Kopieren von Daten schrumpft damit im einfachsten Fall auf eine Anweisung ala (hier eine Oracle Notation):
      Code:
      insert into <meineZieltabelle> <Feldliste>
      (select <Feldliste/ Berechnungen> from <meineQuelltabelle>@<RemoteDB>
       Where <Bedingungen>)
      oder
      Code:
      insert into <meineZieltabelle>@<RemoteDB> <Feldliste>
      (select <Feldliste/ Berechnungen> from <meineQuelltabelle>
       Where <Bedingungen>)
      Dafür wird nicht mal eine SP benötigt.
      Das kann natürlich beliebig komplex werden, wenn Datensätze zusammengefasst, abgeglichen werden müssen usw.
      Hier können fest definierte Views, Snapshots oder Interfacetabellen hilfreich sein.
      Letztlich landet man bei ETL/LTE oder Replication Verfahren.

      Alternativ geht auch was ganz billiges wie z.B. MS Access, wo man mit einfachen Mitteln transparenter ODBC Verbindungen zu den verschiedenen Systemen eintragen kann und dann Daten per Anfüge Abfrage usw. verschiebt. Notfalls mehrstufig, per Macro verkettet usw.
      Ist dann halt client basiert und nicht mehr so schnell, also eher ungeeignet für große Datenmengen. Besonders wenn klassische Merge Anweisungen zu verarbeiten sind (bidirektionaler Abgleich)
      Gruß, defo

      Comment


      • #4
        Entweder es gibt einen beschreibbaren Algorithmus den du Umsetzen kannst um eine Quelle auf ein Ziel zu mappen (aufgrund des verwendeten Namensschemas der beteiligten Objekte in den DBs) oder du brauchst einen gepflegten Datensatz der das Mapping beschreibt. Ein gedachter 3.ter Weg müßte vermutlich aus der Magie Ecke kommen egal welche Tools, Programmiersprache etc. du einsetzt.

        Comment

        Working...
        X