Emulatordaten exportieren und importieren

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 Cloud SDK-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]"}'
Ändern Sie 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 zur overall_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]]}}'
Ändern Sie 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 zur overall_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"}'
Ändern Sie 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]]}}'
Ändern Sie 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.