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 :
Démarrez l'émulateur Cloud Datastore.
Les fonctionnalités d'importation et d'exportation sont disponibles pour les versions 2.1.0 et ultérieures de
cloud-datastore-emulator
. Vous devrez peut-être mettre à jour les composants de la Google Cloud CLI.Pour les opérations d'importation, assurez-vous que les fichiers d'exportation de vos entités se trouvent sur la même machine que l'émulateur.
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]"}'
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 fichieroverall_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]]}}'
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 fichieroverall_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"}'
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]]}}'
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.