Ich möchte eine genaue Kopie (Domänen, Feature-Datasets, Feature-Classes usw.) einer SDE-Datenbank in eine Datei-Geodatabase erstellen.
Ich habe verschiedene Möglichkeiten ausprobiert, darunter:
- Verwenden des Kopierprozesses (Datenverwaltung)
- Erstellen einer neuen GDB und manuelles Kopieren jedes Feature-Datasets aus der SDE
- Exportieren eines XML-Arbeitsbereichsdokuments aus der SDE und Importieren in die GDB
Der Copy_management
Prozess scheint nicht für das Kopieren einer SDE in eine GDB zu funktionieren, da die Eingabe- und Ausgabedatentypen übereinstimmen müssen.
Das Importieren jedes Feature-Datasets in eine neue GDB könnte wahrscheinlich auch mithilfe von Copy_management automatisiert werden, indem jedes Feature-Dataset durchlaufen wird. Dies scheint jedoch zu Problemen mit einer unvollständigen Kopie zu führen, wenn bei einem der Prozesse ein Fehler aufgetreten ist.
Das Exportieren und Importieren von XML-Arbeitsbereichen scheint zu funktionieren, obwohl dieser Prozess unglaublich große Dateien erstellt, wenn der Prozess in großen Geodatabases verwendet wird.
Gibt es eine einfachere Möglichkeit, den Inhalt und das Schema einer SDE in eine GDB zu kopieren als die genannten Möglichkeiten, die automatisiert werden können?
Wenn nicht, gibt es Gründe, warum die oben genannten Möglichkeiten in diesem Prozess nicht genutzt werden sollten?
Antworten:
Die einzige Möglichkeit, eine echte Kopie der Daten (Domänen, Datensätze, Beziehungen usw.) zu erhalten, besteht in der manuellen Methode zum Kopieren und Einfügen im Katalog. ESRI hat uns noch nicht die Möglichkeit gegeben, diese Daten mit einem einzigen Vorgang, der einfach per Skript ausgeführt werden kann, auf andere Weise zu übertragen.
Ich habe einen nächtlichen Prozess, der meine beiden primären SDE-Datenbanken in Datei-Geodatabases für Continuity of Operations kopiert. Auf diese Weise können meine Mitarbeiter im Notfall mit einigen Daten arbeiten, bis mein IT-Shop meine SDE aus dem Backup neu erstellen kann. Nach langem Ausprobieren habe ich beschlossen, dass wir mit den Einschränkungen der Verwendung von FeatureClassToFeatureClass_conversion und TableToTable_conversion leben können , um unsere Daten jede Nacht zu übertragen.
Ja, wir verlieren einen Teil der Funktionalität der Geodatabase, aber sie wird jetzt nachts unbeaufsichtigt ausgeführt und ist sofort einsatzbereit, sobald ich sie erhalte. In meinem Fall ist die einzige Funktionalität, die uns wirklich fehlt (vorausgesetzt, wir arbeiten im Notfallmodus), dass meine Beziehungsklassen unterbrochen sind, weil die Konvertierung die ObjectIDs zurücksetzt, die die beiden Tabellen verbinden.
Bis ESRI uns mehr Optionen bietet, müssen Sie sich ansehen, was Sie im Moment opfern wollen. Zeit und Mühe oder Funktionalität?
quelle
Ich weiß, dass dieser Beitrag etwas alt ist, aber ich dachte, ich würde meine Antwort teilen, da ich mit dem gleichen Problem konfrontiert war. Das folgende Skript SOLLTE alle Tabellen, Feature-Classes und Beziehungen kopieren, die nicht in einem Dataset enthalten sind, und kopiert auch alle Datasets, einschließlich der Feature-Classes, der Topologie usw. innerhalb des Datasets. Es werden alle Fehler übersprungen, die während des Kopierens auftreten, und es wird weitergearbeitet. Es wird eine Protokolldatei erstellt, die Daten wie die Anzahl der Quell-DB-Elemente und die Anzahl der Zielelemente enthält, damit Sie die Kopie vergleichen können, und es werden auch Fehler protokolliert, auf die sie stößt.
Ich hatte wirklich viel Glück damit. Ich habe eine SDE-Datenbank in eine Datei-Geodatabase repliziert. Ich habe dieses Skript jedoch nicht zu ausführlich getestet, da es alle meine Anforderungen erfüllt. Ich habe es mit ArcGIS 10.3 getestet. Außerdem war ich in Gesprächen mit jemandem, der dieses Skript verwendet hat, und er stieß auf ein Problem mit einem Fehler beim Kopieren bestimmter Datensätze aufgrund falscher Berechtigungen und leerer Tabellen.
Lemur - warum erstellen Sie Ihre Beziehungen nicht basierend auf einer globalen ID anstelle der Objekt-ID? Dass Sie Ihre Beziehungen erhalten würden. Wenn Sie keine globalen IDs erstellt haben, kann ich es nur empfehlen.
-aktualisieren
Ich habe dem Code etwas mehr Logik hinzugefügt, um fehlerhafte Datenbankverbindungspfade und eine bessere Protokollierung und Fehlerbehandlung zu behandeln:
quelle
Ich habe ein Skript ähnlich dem von Peter oben verwendet und hatte viel Glück, obwohl seins besser ist. Wenn Sie die 64-Bit-Python-Geoverarbeitung verwenden und ArcFM über ESRI geladen haben, schlägt dies bei allen Funktionen fehl, die für die Verwendung von ArcFM oder Designer mit einem FEHLER 000260 eingestellt wurden Dies liegt daran, dass Sie 32-Bit-Python verwenden müssen, da das ArcFM-Material sonst nicht ordnungsgemäß lizenziert wird.
Eine ausführlichere Beschreibung der Verwendung von 32-Bit-ArcPy finden Sie in den ersten beiden Kommentaren zu diesem Thread in Exchange
https://infrastructurecommunity.schneider-electric.com/docs/DOC-2563
quelle
Wenn Sie Administratorrechte haben , können Sie einfache Kopie verwenden und Geo-Datenbank Schraubstock Befehle Export oder Import sde zu Datei kehrt einfügen und sich auch hier für weitere Details.
quelle