Mit den Import- und Exportfunktionen des Datastore-Emulators können Sie Daten aus der Datenbankinstanz exportieren und in den Emulator laden. Sie können auch Daten aus dem Emulator exportieren und in die Datenbank im Datastore-Modus laden.
Vorbereitung
Führen Sie die folgenden Schritte aus, bevor Sie die Import- oder Exportfunktionen des Datastore-Emulators verwenden:
Den Datastore-Emulator starten.
Die Import- und Exportfunktionen sind für
cloud-datastore-emulator
Version 2.1.0 und höher verfügbar. Möglicherweise müssen Sie die Google Cloud CLI-Komponenten aktualisieren.Achten Sie bei Importvorgängen darauf, dass sich die Exportdateien der Entität auf demselben Computer wie der Emulator befinden.
Entitäten in den Emulator importieren
Mit der Importfunktion des Emulators können Sie Entitäten aus einer Reihe von Entitätsexportdateien in den Emulator laden. Die Entitätsexportdateien können aus einem Export der Datenbank im Datastore-Modus oder aus einer Emulatorinstanz stammen.
Senden Sie eine POST
-Importanfrage an den Emulator, um Entitäten in den Emulator zu importieren. Dazu können Sie curl oder ein ähnliches Tool verwenden. Mit der folgenden Anfrage werden z. B. alle Entitäten aus einer Reihe von Entitätsexportdateien in den Emulator importiert:
Protokoll
curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:import \ -H 'Content-Type: application/json' \ -d '{"input_url":"[ENTITY_EXPORT_FILES]"}'
localhost:8081
, wenn vom Emulator ein anderer Port verwendet wird.Dabei gilt:
[PROJECT_ID]
ist die ID des Projekts.[ENTITY_EXPORT_FILES]
ist der Pfad zuroverall_export_metadata
-Datei Ihrer Entitätsexportdateien. Beispiel:{"input_url":"/home/user/myexports/2019-02-04T19:39:33_443/2019-02-04T19:39:33_443.overall_export_metadata"}
Entitäten aus bestimmten Arten und Namespaces importieren
Sie können einen Entitätsfilter angeben, um Entitäten nur aus bestimmten Arten oder Namespaces zu importieren. Ein Entitätsfilter lässt sich nur dann angeben, wenn der Export mit einem Entitätsfilter erstellt wurde.
Geben Sie Arten oder Namespaces in einem Entitätsfilter an:
Protokoll
curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:import \ -H 'Content-Type: application/json' \ -d '{"input_url":"[ENTITY_EXPORT_FILES]", "entity_filter":{"kinds":[[KIND_NAMES]], "namespace_ids":[[NAMESPACES]]}}'
localhost:8081
, wenn vom Emulator ein anderer Port verwendet wird.Dabei gilt:
[PROJECT_ID]
ist die ID des Projekts.[ENTITY_EXPORT_FILES]
ist der Pfad zuroverall_export_metadata
-Datei Ihrer Entitätsexportdateien. Beispiel:{"input_url":"/home/user/myexports/2019-02-04T19:39:33_443/2019-02-04T19:39:33_443.overall_export_metadata"}
[KIND_NAMES]
ist eine Liste von Arten:"kinds":["KIND_1", "KIND_2"]
[NAMESPACES]
ist eine Liste von Namespace-IDs:"namespace_ids":["NAMESPACE_1", "NAMESPACE_2"]
Entitäten im Emulator exportieren
Mit der Exportfunktion des Emulators können Sie Entitäten im Emulator in einer Reihe von Entitätsexportdateien speichern. Danach können Sie die Entitäten in den Entitätsexportdateien über einen Importvorgang in die Datenbank im Datastore-Modus oder in eine Emulatorinstanz laden.
Senden Sie eine POST
-Exportanfrage an den Emulator, um Entitäten in einer Emulatorinstanz zu exportieren. Dazu können Sie curl oder ein ähnliches Tool verwenden. Mit der folgenden Anfrage werden z. B. alle Entitäten im Emulator exportiert:
Protokoll
curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:export \ -H 'Content-Type: application/json' \ -d '{"output_url_prefix":"EXPORT_DIRECTORY"}'
localhost:8081
, wenn vom Emulator ein anderer Port verwendet wird.Dabei gilt:
[PROJECT_ID]
ist die ID des Projekts.[EXPORT_DIRECTORY]
gibt das Verzeichnis an, in dem die Entitätsexportdateien vom Emulator gespeichert werden. Dieses Verzeichnis darf noch keine Entitätsexportdateien enthalten. Beispiel:{"output_url_prefix":"/home/user/myexports/2019-02-04/"}
Entitäten aus bestimmten Arten und Namespaces exportieren
Sie können einen Entitätsfilter angeben, um Entitäten nur aus bestimmten Arten oder Namespaces zu exportieren.
Geben Sie Arten oder Namespaces in einem Entitätsfilter an:
Protokoll
curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:export \ -H 'Content-Type: application/json' \ -d '{"output_url_prefix":"EXPORT_DIRECTORY", "entity_filter":{"kinds":[[KIND_NAMES]], "namespace_ids":[[NAMESPACES]]}}'
localhost:8081
, wenn vom Emulator ein anderer Port verwendet wird.Dabei gilt:
[PROJECT_ID]
ist die ID des Projekts.[EXPORT_DIRECTORY]
gibt das Verzeichnis an, in dem die Entitätsexportdateien vom Emulator gespeichert werden. Dieses Verzeichnis darf noch keine Entitätsexportdateien enthalten. Beispiel:{"output_url_prefix":"/home/user/myexports/2019-02-04/"}``
[KIND_NAMES]
ist eine Liste von Arten:"kinds":["KIND_1", "KIND_2"]
[NAMESPACES]
ist eine Liste von Namespace-IDs:"namespace_ids":["NAMESPACE_1", "NAMESPACE_2"]
Emulatordaten in die Datenbank laden
Vom Emulator erstellte Entitätsexportdateien sind über den verwalteten Import für Datenbanken im Datastore-Modus verfügbar.
Bevor Sie vom Emulator exportierte Entitäten in die Datenbank laden können, müssen Sie die Entitätsexportdateien in einen Cloud Storage-Bucket hochladen. Über den verwalteten Import lassen sich Daten nur aus Cloud Storage-Buckets lesen.
Sobald die Entitätsexportdateien in einem Cloud Storage-Bucket verfügbar sind, können Sie die Daten in die Datenbank importieren, wie unter Entitäten exportieren und importieren beschrieben.