Migrieren von Geodaten aus Oracle zu Postgresql
Ich versuche mein bestes zu migrieren einer Geo-Datenbank von Oracle zu Postgresql und scheitern kläglich.
Habe ich versucht viele verschiedene Möglichkeiten, wie Sie sehen können aus meiner früheren Frage hier, und niemand arbeiten. Kann mir bitte jemand sagen, der eine relativ schmerzlose Möglichkeit, dies zu tun, da bin ich jetzt ahnungslos mit ihm.
Habe ich versucht, mit Hilfe von 3rd-party-software wie SwisSQL aber dies scheiterte mit einer Vielzahl von Fehlern. Ich habe versucht, Dateien zu erzeugen, voll von insert-Anweisungen und erstellt dann ein C# - Programm zu analysieren, und ersetzen Sie die oracle-spatial-Typen mit entsprechenden postgis und diejenigen, die nicht mit einem out of memory-Ausnahme auf der grundlegendsten ersetzt durch die schiere Größe dieser Dateien. Einige der Tische haben über 2 Millionen Datensätze, so können Sie sich vorstellen, die Größe der Datei, die die Einsätze enthielten, für jeden von denen.
Ich bin immer ziemlich verzweifelt nach einer Lösung für dieses, wie es ist ernsthaft behindern den Fortschritt auf diesem Projekt. Ich brauche die Daten in Postgresql, denn ich Schreibe software, die muss sein, Datenbank-agnostisch, d.h. es muss geprüft werden, auf realen Daten für jede Datenbank.
Irgendwelche Ideen jeglicher Art wäre mit offenen Armen willkommen geheißen. Wenn es nicht für die räumliche Aspekt dieser wäre es gewesen, weit mehr einfach und wahrscheinlich gemacht durch jetzt.
EDIT:
Hier ist ein Beispiel für eine insert-produziert von Toad für Oracle, um eine Vorstellung zu geben von Daten die Komplexität.
Insert into CLUSTER_1000M
(CLUSTER_ID, CELL_GEOM, CELL_CENTROID)
Values
(4410925,
"MDSYS"."SDO_GEOMETRY"(2003,81989,NULL,
"MDSYS"."SDO_ELEM_INFO_ARRAY"(1,1003,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
"MDSYS"."SDO_ORDINATE_ARRAY"(80000,103280,81000,104280,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)),
"MDSYS"."SDO_GEOMETRY"(2001,81989,
"MDSYS"."SDO_POINT_TYPE"(80500,103780,NULL),NULL,NULL));
- Ich denke, das könnte tatsächlich eine bessere Traktion auf gis.stackexchange.com.
- Ich weiß, das ist nicht ganz das, was Sie nach sind, aber es könnte Ihnen ein paar gute Ideen: Wie die batch synchronisieren von Daten aus ArcSDE PostGIS?
- "Anzahl der Datensätze" ist selten wichtig - die Komplexität der einzelnen Datensätze oft der Fall ist. Wenn Sie Ihre räumlichen Daten haben Tausende von Ringen, schlechte geometrie, etc etc, dann kann man erwarten, dass Fehler.
- Ich will hinzufügen, ein Beispiel für eine insert-erzeugt durch oracle, das kann eine Vorstellung von Komplexität
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei beliebte Optionen: open-source -
ogr2ogr
oder ein kommerzielles Angebot von Sichere Software.Hier ist, wie ich Ansatz der
ogr2ogr
Lösung.Zuerst müssen Sie die richtigen Werkzeuge: GDAL/OGR. Wenn Sie unter Unix kompilieren Sie mit der rechten Bibliotheken zu erhalten Oracle-Unterstützung (standardmäßig nicht aktiviert). Aber ich nehme an, Sie sind auf Windows. Der einfachste Weg, um open-source geospatial tools ist mit OSGeo4W. Zum aktivieren der Oracle-Unterstützung für GDAL/OGR, müssen Sie auch wählen Sie die
gdal-oracle10g
Paket in setup.exe mit der "Advanced Install" - Modus. Mehr Infos über die Oracle-Paket ist bei auf dieser Seite, und beachten Sie, dass Sie auch brauchen, um die Versorgung der non-free -OCI.DLL
. Wenn Sie arbeiten, sollten Sie sehen, der name des Fahrers angezeigt, mitogr2ogr --formats
.Ihre basic-Befehl aus dem OSGeo4W-Shell sollte so Aussehen:
Hier gibt es mehr Informationen über GDAL/OGR:
Akzeptiert die Lösung nicht für mich arbeiten.
Install GDAL/OGR mit OSGeo4W, und im Erweiterten Installationsmodus wählen Sie gdal-oracle10g.
Dann diesen Befehl ausführen:
ersetzen Sie {{ }} Elemente mit Ihren Werten!
Müssen Sie dies tun, für jede Tabelle. Es ist ein Arbeitsblatt generieren diese Befehle für Sie:
http://gis-expert.com/wp/2018/09/12/how-to-migrate-spatial-data-from-oracle-to-postgis/