Exporter et importer des données de l'émulateur

Les fonctionnalités d'importation et d'exportation de l'émulateur Datastore vous permettent d'exporter des données de votre instance de base de données et de les charger dans l'émulateur. Vous pouvez également exporter des données de l'émulateur et les charger dans votre base de données en mode Datastore.

Avant de commencer

Avant d'utiliser les fonctionnalités d'importation ou d'exportation de l'émulateur Datastore, effectuez les tâches suivantes :

Importer des entités dans l'émulateur

La fonctionnalité d'importation de l'émulateur vous permet de charger des entités dans l'émulateur à partir d'un ensemble de fichiers d'exportation d'entités. Les fichiers d'exportation d'entités peuvent provenir d'une exportation de votre base de données en mode Datastore ou d'une instance d'émulateur.

Pour importer des entités dans l'émulateur, envoyez une demande d'importation POST à l'émulateur. Vous pouvez utiliser curl ou un outil similaire. Par exemple, la requête suivante importe dans l'émulateur toutes les entités d'un ensemble de fichiers d'exportation d'entités :

Protocole

curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:import \
-H 'Content-Type: application/json' \
-d '{"input_url":"[ENTITY_EXPORT_FILES]"}'
Modifiez localhost:8081 si l'émulateur utilise un autre port.

où :

  • [PROJECT_ID] est l'ID de votre projet.
  • [ENTITY_EXPORT_FILES] est le chemin d'accès au fichier overall_export_metadata des fichiers d'exportation de votre entité. Exemple :

    {"input_url":"/home/user/myexports/2019-02-04T19:39:33_443/2019-02-04T19:39:33_443.overall_export_metadata"}

Importer des entités de genres et d'espaces de noms spécifiques

Vous pouvez spécifier un filtre d'entité pour n'importer que les entités de genres ou d'espaces de noms spécifiques. Vous ne pouvez spécifier un filtre d'entité que si l'exportation a été créée à l'aide d'un tel filtre.

Spécifiez les genres ou les espaces de noms dans un filtre d'entité :

Protocole

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]]}}'
Modifiez localhost:8081 si l'émulateur utilise un autre port.

où :

  • [PROJECT_ID] est l'ID de votre projet.
  • [ENTITY_EXPORT_FILES] est le chemin d'accès au fichier overall_export_metadata des fichiers d'exportation de votre entité. Exemple :

    {"input_url":"/home/user/myexports/2019-02-04T19:39:33_443/2019-02-04T19:39:33_443.overall_export_metadata"}

  • [KIND_NAMES] est une liste de genres : "kinds":["KIND_1", "KIND_2"]

  • [NAMESPACES] est une liste d'ID d'espaces de noms :

    "namespace_ids":["NAMESPACE_1", "NAMESPACE_2"]

Exporter des entités dans l'émulateur

La fonctionnalité d'exportation de l'émulateur vous permet d'enregistrer des entités dans l'émulateur au sein d'un ensemble de fichiers d'exportation d'entités. Vous pouvez alors utiliser une opération d'importation pour charger, dans votre base de données en mode Datastore ou dans une instance d'émulateur, les entités contenues dans les fichiers d'exportation d'entités.

Pour exporter des entités dans une instance d'émulateur, envoyez une requête d'exportation POST à l'émulateur. Vous pouvez utiliser curl ou un outil similaire. Par exemple, la requête suivante exporte toutes les entités dans l'émulateur :

Protocole

curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:export \
-H 'Content-Type: application/json' \
-d '{"output_url_prefix":"EXPORT_DIRECTORY"}'
Modifiez localhost:8081 si l'émulateur utilise un autre port.

où :

  • [PROJECT_ID] est l'ID de votre projet.
  • [EXPORT_DIRECTORY] spécifie le répertoire dans lequel l'émulateur enregistre les fichiers d'exportation d'entités. Ce répertoire ne doit pas déjà contenir un ensemble de fichiers d'exportation d'entités. Exemple :

    {"output_url_prefix":"/home/user/myexports/2019-02-04/"}

Exporter des entités de genres et d'espaces de noms spécifiques

Vous pouvez spécifier un filtre d'entité pour n'exporter que les entités de genres ou d'espaces de noms spécifiques.

Spécifiez les genres ou les espaces de noms dans un filtre d'entité :

Protocole

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]]}}'
Modifiez localhost:8081 si l'émulateur utilise un autre port.

où :

  • [PROJECT_ID] est l'ID de votre projet.
  • [EXPORT_DIRECTORY] spécifie le répertoire dans lequel l'émulateur enregistre les fichiers d'exportation d'entités. Ce répertoire ne doit pas déjà contenir un ensemble de fichiers d'exportation d'entités. Exemple :

    {"output_url_prefix":"/home/user/myexports/2019-02-04/"}``

  • [KIND_NAMES] est une liste de genres : "kinds":["KIND_1", "KIND_2"]

  • [NAMESPACES] est une liste d'ID d'espaces de noms :

    "namespace_ids":["NAMESPACE_1", "NAMESPACE_2"]

Charger les données de l'émulateur dans votre base de données

Les fichiers d'exportation d'entités créés par l'émulateur sont compatibles avec la fonctionnalité d'importation gérée pour les bases de données en mode Datastore.

Avant de pouvoir charger des entités exportées de l'émulateur dans votre base de données, vous devez transférer vos fichiers d'exportation d'entités vers un bucket Cloud Storage. La fonctionnalité d'importation gérée ne lit que des buckets Cloud Storage.

Une fois vos fichiers d'exportation d'entités disponibles dans un bucket Cloud Storage, vous pouvez importer les données dans votre base de données, comme décrit sur la page Exporter et importer des entités.