Como exportar e importar dados do emulador

Com os recursos de importação e exportação do emulador do Datastore, é possível exportar dados de sua instância de banco de dados e carregá-los no emulador ou exportar dados do emulador e carregá-los no banco de dados do modo Datastore.

Antes de começar

Para usar estes recursos do emulador do Datastore, faça o seguinte:

Importar entidades para o emulador

O recurso de importação do emulador permite carregar entidades de um conjunto de arquivos de exportação da entidade no emulador. Os arquivos de exportação da entidade podem ser provenientes de uma exportação do banco de dados do modo Datastore ou de uma instância do emulador.

Para importar entidades para o emulador, envie uma solicitação de importação POST ao emulador. Use curl ou uma ferramenta semelhante. Por exemplo, esta solicitação importará todas as entidades de um conjunto de arquivos de exportação da entidade para o emulador:

Protocolo

curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:import \
-H 'Content-Type: application/json' \
-d '{"input_url":"[ENTITY_EXPORT_FILES]"}'
Modifique localhost:8081 caso o emulador use uma porta diferente.

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [ENTITY_EXPORT_FILES] é o caminho para o arquivo overall_export_metadata dos seus arquivos de exportação de entidade. Exemplo:

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

Importar entidades de tipos e namespaces específicos

É possível especificar um filtro de entidade para importar entidades apenas de determinados tipos ou namespaces. Você só poderá especificar um filtro de entidade se a exportação tiver sido criada com o uso de um filtro de entidade.

Especifique tipos ou namespaces em um filtro de entidade:

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]]}}'
Modifique localhost:8081 caso o emulador use uma porta diferente.

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [ENTITY_EXPORT_FILES] é o caminho para o arquivo overall_export_metadata dos seus arquivos de exportação de entidade. Exemplo:

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

  • [KIND_NAMES] é uma lista de tipos: "kinds":["KIND_1", "KIND_2"]

  • [NAMESPACES] é uma lista de IDs de namespace:

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

Exportar entidades no emulador

O recurso de exportação do emulador permite salvar entidades no emulador em um conjunto de arquivos de exportação da entidade. Em seguida, use uma operação de importação para carregar as entidades nos arquivos de exportação da entidade no banco de dados do modo Datastore ou em uma instância do emulador.

Para exportar entidades em uma instância de emulador, envie uma solicitação de exportação POST ao emulador. Use curl ou uma ferramenta semelhante. Por exemplo, esta solicitação exportará todas as entidades no emulador:

Protocolo

curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:export \
-H 'Content-Type: application/json' \
-d '{"output_url_prefix":"EXPORT_DIRECTORY"}'
Modifique localhost:8081 caso o emulador use uma porta diferente.

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [EXPORT_DIRECTORY] especifica o diretório em que o emulador salvará os arquivos de exportação da entidade. Esse diretório não pode conter um conjunto de arquivos de exportação da entidade. Exemplo:

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

Exportar entidades de tipos e namespaces específicos

É possível especificar um filtro de entidade para exportar entidades apenas de determinados tipos ou namespaces.

Especifique tipos ou namespaces em um filtro de entidade:

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]]}}'
Modifique localhost:8081 caso o emulador use uma porta diferente.

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [EXPORT_DIRECTORY] especifica o diretório em que o emulador salvará os arquivos de exportação da entidade. Esse diretório não pode conter um conjunto de arquivos de exportação da entidade. Exemplo:

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

  • [KIND_NAMES] é uma lista de tipos: "kinds":["KIND_1", "KIND_2"]

  • [NAMESPACES] é uma lista de IDs de namespace:

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

Carregar dados do emulador no banco de dados

Os arquivos de exportação da entidade criados pelo emulador são compatíveis com o recurso de importação gerenciada para bancos de dados do modo Datastore.

Antes de carregar as entidades exportadas do emulador para o banco de dados, faça upload dos arquivos de exportação da entidade para um bucket do Cloud Storage. O recurso de importação gerenciada é lido apenas em buckets do Cloud Storage.

Quando os arquivos de exportação da entidade estiverem disponíveis em um bucket do Cloud Storage, importe os dados para o banco de dados, conforme descrito em Como exportar e importar entidades.