Exportar e importar los datos del emulador

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:

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]"}'
Modifica localhost:8081 si el emulador usa otro puerto.

donde:

  • [PROJECT_ID] es el ID de tu proyecto.
  • [ENTITY_EXPORT_FILES] es la ruta al archivo overall_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]]}}'
Modifica localhost:8081 si el emulador usa otro puerto.

donde:

  • [PROJECT_ID] es el ID de tu proyecto.
  • [ENTITY_EXPORT_FILES] es la ruta al archivo overall_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"}'
Modifica 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]]}}'
Modifica 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.