2 Datentabellen zusammenführen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ronin269.

    2 Datentabellen zusammenführen

    Hallo an alle,

    ich habe zwei verschieden Datenbanken (Firebird - Produktiv, mysql - zur Programmierung).

    In beiden befindet sich jeweils eine Tabelle (LIEFER - Lieferantendatenbank) der Aufbau ist exakt gleich.Tabelle aus Firebird wird in der Produktivumgebung aktuell gehalten und bekommt laufend Änderungen sowie neue Einträge. Tabelle zwei wurde jetzt syncronisert und kann eigene Einträge bekommen (noch nicht eingebaut).

    So nun meine Frage:

    Wie bekomme ich es hin, dass in der MySQL Tabelle die Einträge die aus der Firebird stammen aktualisiert werden, ohne das die neu eingefügten in der MySQL Tabelle gelöscht werden aber vorhandene geupdatet.

    Das ist mein Versuch

    VB.NET-Quellcode

    1. Sub vergleichdb()
    2. con = Verbindung()
    3. con.Open()
    4. Dim sql As String
    5. sql = "select * from LIEFER"
    6. Dim dt1 As New DataTable
    7. Dim da As FbDataAdapter = New FbDataAdapter(sql, con)
    8. Try
    9. da.Fill(dt1)
    10. Catch ex As Exception
    11. MsgBox(ex.Message)
    12. End Try
    13. con.Close()
    14. dt1.PrimaryKey = New DataColumn() {dt1.Columns("ADRESSNR")} ' notwendig für MERGE
    15. conmy = Verbindungmy()
    16. conmy.Open()
    17. Dim dt2 As New DataTable
    18. Dim db As MySqlDataAdapter = New MySqlDataAdapter(sql, conmy)
    19. Try
    20. db.Fill(dt2)
    21. Catch ex1 As Exception
    22. MsgBox(Ex1.message)
    23. End Try
    24. conmy.Close()
    25. dt2.PrimaryKey = New DataColumn() {dt2.Columns("ADRESSNR")} ' notwendig für MERGE
    26. dt2.Merge(dt1)
    27. Form3.dgv2.DataSource = dt2
    28. 'Form3.dgv2.DataMember = "Liefer2"
    29. Form3.Show()
    30. conmy.Open()
    31. db.Update(dt2)
    32. conmy.Close()
    33. MessageBox.Show("Sollte erledigt sein!")
    34. End Sub


    Leider das DGV zeigt den richtigen Inhalt an, aber in die Datenbank wird keiner geschrieben. (Inhalt einfügen kommt später noch)

    Grüße und danke Ronin269
    hier wäre glaub eine StoredProc optimal.
    Weil ansonsten musst du halt alle Db2-Datensätze laden.

    Und dann hat man immer noch mehrere möglichkeiten, je nachdem, was verlangt ist, und wie die Primärschlüssel definiert sind.
    also erstmal Fragen zum Datenmodell:
    zu db1: ist der Primkey mit AutoIncrement?
    zu db2: ist der Primkey mit AutoIncrement?
    dient die db2-Tabelle nur der Datensicherung, oder wird damit weiter-gearbeitet?
    Was soll mit Löschungen in db1 geschehen - soll dann die Entsprechung in db2 auch gelöscht werden?