Con las funciones de importación y exportación del emulador de Datastore, puedes exportar datos de tu instancia de base de datos y cargarlos en el emulador. También puedes exportar datos del emulador y cargarlos en tu base de datos en modo Datastore.
Antes de empezar
Antes de usar las funciones de importación o exportación del emulador de Datastore, haz lo siguiente:
Inicia el emulador de Datastore.
Las funciones de importación y exportación están disponibles en
cloud-datastore-emulator
versiones 2.1.0 y posteriores. Puede que tengas que actualizar los componentes de Google Cloud CLI.En el caso de las operaciones de importación, asegúrate de que los archivos de exportación de entidades estén en el mismo equipo que el emulador.
Importar entidades al emulador
La función de importación del emulador te permite cargar entidades de un conjunto de archivos de exportación de entidades en el emulador. Los archivos de exportación de entidades pueden proceder de una exportación de tu base de datos en modo Datastore o de una instancia del emulador.
Para importar entidades al emulador, envía una solicitud de importación POST
al emulador. Puedes usar curl o una herramienta similar. Por ejemplo, la siguiente solicitud importará todas las entidades de un conjunto de archivos de exportación de entidades al emulador:
Protocolo
curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:import \ -H 'Content-Type: application/json' \ -d '{"input_url":"[ENTITY_EXPORT_FILES]"}'
localhost:8081
si el emulador usa otro puerto.donde:
[PROJECT_ID]
es el ID de tu proyecto.[ENTITY_EXPORT_FILES]
es la ruta al archivooverall_export_metadata
de los archivos de exportación de tu entidad. Por ejemplo:{"input_url":"/home/user/myexports/2019-02-04T19:39:33_443/2019-02-04T19:39:33_443.overall_export_metadata"}
Importar entidades de tipos y espacios de nombres específicos
Puede especificar un filtro de entidades para importar entidades de tipos o espacios de nombres específicos. Solo puede especificar un filtro de entidad si la exportación se ha creado con un filtro de entidad.
Especifica tipos o espacios de nombres en un filtro de entidades:
Protocolo
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 el emulador usa otro puerto.donde:
[PROJECT_ID]
es el ID de tu proyecto.[ENTITY_EXPORT_FILES]
es la ruta al archivooverall_export_metadata
de los archivos de exportación de tu entidad. Por ejemplo:{"input_url":"/home/user/myexports/2019-02-04T19:39:33_443/2019-02-04T19:39:33_443.overall_export_metadata"}
[KIND_NAMES]
es una lista de tipos:"kinds":["KIND_1", "KIND_2"]
[NAMESPACES]
es una lista de IDs de espacios de nombres:"namespace_ids":["NAMESPACE_1", "NAMESPACE_2"]
Exportar entidades en el emulador
La función de exportación del emulador te permite guardar entidades del emulador en un conjunto de archivos de exportación de entidades. Después, puedes usar una operación de importación para cargar las entidades de los archivos de exportación de entidades en tu base de datos en modo Datastore o en una instancia del emulador.
Para exportar entidades en una instancia del emulador, envía una solicitud de exportación POST
al emulador. Puedes usar curl o una herramienta similar. Por ejemplo, la siguiente solicitud exportará todas las entidades del emulador:
Protocolo
curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:export \ -H 'Content-Type: application/json' \ -d '{"output_url_prefix":"EXPORT_DIRECTORY"}'
localhost:8081
si el emulador usa otro puerto.donde:
[PROJECT_ID]
es el ID de tu proyecto.[EXPORT_DIRECTORY]
especifica el directorio en el que el emulador guarda los archivos de exportación de entidades. Este directorio no debe contener ya un conjunto de archivos de exportación de entidades. Por ejemplo:{"output_url_prefix":"/home/user/myexports/2019-02-04/"}
Exportar entidades de tipos y espacios de nombres específicos
Puede especificar un filtro de entidad para exportar entidades de tipos o espacios de nombres específicos.
Especifica tipos o espacios de nombres en un filtro de entidades:
Protocolo
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 el emulador usa otro puerto.donde:
[PROJECT_ID]
es el ID de tu proyecto.[EXPORT_DIRECTORY]
especifica el directorio en el que el emulador guarda los archivos de exportación de entidades. Este directorio no debe contener ya un conjunto de archivos de exportación de entidades. Por ejemplo:{"output_url_prefix":"/home/user/myexports/2019-02-04/"}``
[KIND_NAMES]
es una lista de tipos:"kinds":["KIND_1", "KIND_2"]
[NAMESPACES]
es una lista de IDs de espacios de nombres:"namespace_ids":["NAMESPACE_1", "NAMESPACE_2"]
Cargar datos del emulador en tu base de datos
Los archivos de exportación de entidades creados por el emulador son compatibles con la función de importación gestionada de las bases de datos en modo Datastore.
Antes de poder cargar en tu base de datos las entidades exportadas del emulador, debes subir los archivos de exportación de entidades a un segmento de Cloud Storage. La función de importación gestionada solo lee de los segmentos de Cloud Storage.
Una vez que los archivos de exportación de entidades estén disponibles en un segmento de Cloud Storage, podrá importar los datos a su base de datos tal como se describe en Exportar e importar entidades.