Gromran Geschrieben 9. März 2011 Teilen Geschrieben 9. März 2011 Hallo, ich suche eine Möglichkeit, zwei MySQL-Datenbanken zusammen zuführen. Beide Datenbanken sind gleich, also Struktur (und Ausgangsdaten), aber in beiden werden unterschiedliche neue Daten eingetragen (in einer z.B neue User, in der anderen neue Aufgaben). Solange diese sich nicht überschneiden, das auch kein Problem. Nur kann dies nicht sichergestellt werden. Es kann also passieren, das in beiden DB's ein neuer Eintrag im selben Table geschieht, was bei einem einfachen Merge die UniqueIDs komplett durcheinander bringt bzw deren Fremdschlüsselabhängigkeiten. Nun könnte man von Hand versuchen das auszulesen und anzupassen, was aber bei 300+ Tabellen nicht lustig ist, zumal der DB-Entwurf (nicht von mir... ich sag nur Moodle^^) nicht 100% atomar ist. Aufgaben werden z.B. zu einem Quiz zusammengefasst. Im Quiztable werden alle Aufgaben kommagetrennt in einem Feld gespeichert. Falls irgendjemand eine gute Idee oder eine funktionierende Lösung hat... immer her damit. MfG, Gromran Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 9. März 2011 Teilen Geschrieben 9. März 2011 Du kannst mit einem INSERT IGNORE die Daten von der einen Tabelle in die andere übertragen (siehe MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.4 INSERT ). Bei einem INSERT kannst Du über "ON DUPLICATE KEY" festlegen, wie verfahren werden soll, wenn eine Schlüsselverletzung auftritt. Natürlich musst Du die Integritäten beachten, d.h. erst die führende Tabelle füllen und dann die abhängigen. Rein technisch stellt das Einfügen der Daten kein großes Problem dar. Inhaltlich kann es aber zu Problemen führen, wenn Du nicht feststellen kannst, welche Datensatz nun eingefügt werden muss. Aus der Erfahrung heraus würde ich das ganze via ON DUPLICATES KEY umsetzen und zuvor eben schon die Menge, die ich einfügen muss vorbereiten. Weiterhin würde ich das ganze transaktionssicher aufbauen und eben bei Datensätzen, die nicht eindeutig zuzuordnen sind, ein entsprechendes Log schreiben, so dass ich diese eben händisch anschauen kann. Ein Standardvorgehen wird es aber nicht geben, d.h. Du musst das schon in Abhängigkeit von Deinen Dir überlegen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.