Importar y exportar datos del emulador

Con las funciones de importación y exportación del emulador de Datastore, puedes exportar datos desde tu instancia de base de datos y cargarlos en el emulador. También puedes exportar datos desde el emulador y cargarlos en la base de datos en modo Datastore.

Antes de comenzar

Antes de usar las funciones de importación o exportación del emulador de Datastore, haz lo siguiente:

Importa entidades en el 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 provenir 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 en el 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 un puerto diferente.

Donde:

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

Importa entidades de categorías y espacios de nombres específicos

Puedes especificar un filtro de entidad para importar entidades solo de categorías o espacios de nombres específicos. Puedes especificar un filtro de entidad solo si la exportación se creó con uno.

Especifica categorías o espacios de nombres en un filtro de entidad:

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 un puerto diferente.

Donde:

  • [PROJECT_ID] es el ID de tu proyecto.
  • [ENTITY_EXPORT_FILES] es la ruta de acceso 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 categorías: "kinds":["KIND_1", "KIND_2"]

  • [NAMESPACES] es una lista de ID de espacio de nombres:

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

Exporta entidades en el emulador

La función de exportación del emulador te permite guardar entidades en el emulador en un conjunto de archivos de exportación de entidades. Puedes usar una operación de importación para cargar las entidades en 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 en el 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 un puerto diferente.

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 otro conjunto de archivos de exportación de entidades. Por ejemplo:

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

Exporta entidades de categorías y espacios de nombres específicos

Puedes especificar un filtro de entidad para exportar entidades solo de categorías o espacios de nombres específicos.

Especifica categorías o espacios de nombres en un filtro de entidad:

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 un puerto diferente.

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 otro 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 categorías: "kinds":["KIND_1", "KIND_2"]

  • [NAMESPACES] es una lista de ID de espacio de nombres:

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

Carga datos del emulador en tu base de datos

Los archivos de exportación de entidades que crea el emulador son compatibles con la función de importación administrada para las bases de datos en modo Datastore.

Antes de poder subir las entidades exportadas del emulador a tus bases de datos, debes subir tus archivos de exportación de entidades a un depósito de Cloud Storage. La función de importación administrada solo lee desde depósitos de Cloud Storage.

Una vez que tus archivos de exportación de entidad estén disponibles en un depósito de Cloud Storage, puedes importar los datos a tu base de datos como se describe en Importa y exporta entidades.