Die zwei Datenbanken haben identische Schemas, aber unterschiedliche Daten. Es ist möglich, dass einige Zeilen dupliziert werden, aber es ist ausreichend, wenn die Zusammenführung laut abläuft und die Aktualisierung nicht erfolgt, wenn Duplikate gefunden werden, d. H. Duplikate sollten manuell aufgelöst werden.Zwei verschiedene Postgresql-Datenbanken in einer einzigen Datenbank zusammenführen
Ein Teil des Problems besteht darin, dass in den betreffenden Datenbanken eine Reihe von Fremdschlüsseleinschränkungen bestehen. Außerdem kann es Spalten geben, die auf Fremdschlüssel verweisen, die keine Fremdschlüsselbeschränkungen haben. Letztere sind auf Leistungsprobleme beim Einfügen zurückzuführen. Außerdem müssen wir in der Lage sein, zwischen den IDs der alten Datenbanken und den IDs in der neuen Datenbank zu mappen.
Offensichtlich können wir eine Reihe von Code schreiben zu handhaben, aber wir suchen nach einer Lösung, die:
- Weniger Arbeit
- weniger Overhead auf den Maschinen die Zusammenführung zu tun.
- Zuverlässiger. Wenn wir Code schreiben müssen, müssen sie durch die Prüfung gehen, usw. und ist nicht fehlerfrei gewährleistet sein
Offensichtlich sind wir immer noch im Internet und der PostgreSQL-Dokumentation für die Antwort suchen, aber was wir Bisher ist es nicht hilfreich gewesen.
Update: Eine Sache, die ich deutlich ausgelassen habe, ist, dass "Duplikate" eindeutig durch eindeutige Einschränkungen im Schema definiert sind. Wir erwarten, den Inhalt einer Datenbank wiederherzustellen und dann den Inhalt einer Sekunde wiederherzustellen. Fehler während der zweiten Wiederherstellung sollten als fatal für die zweite Wiederherstellung betrachtet werden. Die Duplikate sollten dann aus der zweiten Datenbank entfernt und ein neuer Dump erstellt werden. Wir wollen, dass die IDs neu nummeriert werden, aber nicht die anderen eindeutigen Einschränkungen. Es ist möglich, dass eine dritte oder sogar eine vierte Datenbank nach der zweiten zusammengeführt wird.
Die Update-Kaskade wird helfen, unser Problem zu lösen. Es ist nicht ausreichend (wie Sie hingewiesen haben), aber hilft. ID-Überlauf sollte kein Problem sein, da unsere IDs alle bigints sind. – aikimcr