Como exportar e importar dados do emulador

Usando 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. Também é possível exportar dados do emulador e carregá-los no banco de dados do modo Datastore.

Antes de começar

Para usar os recursos de importação ou exportação 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 de entidades no emulador. Os arquivos de exportação de entidades 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 para o emulador. Use curl ou uma ferramenta semelhante. Por exemplo, esta solicitação importará todas as entidades de um conjunto de arquivos de exportação de entidades 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 do arquivo overall_export_metadata de seus arquivos de exportação de entidade. Por 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

Especifique um filtro de entidade para importar entidades apenas de tipos ou namespaces específicos. Só será possível especificar um filtro de entidade se a exportação tiver sido criada usando-se 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 do arquivo overall_export_metadata de seus arquivos de exportação de entidade. Por 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 do emulador, envie uma solicitação de exportação POST para o 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 salva os arquivos de exportação da entidade. Esse diretório não pode conter um conjunto de arquivos de exportação da entidade. Por 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 tipos ou namespaces específicos.

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 salva os arquivos de exportação da entidade. Esse diretório não pode conter um conjunto de arquivos de exportação da entidade. Por 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.

Para carregar entidades exportadas do emulador para o banco de dados, faça upload dos arquivos de exportação da entidade para um intervalo do Cloud Storage. O recurso de importação gerenciada só é lido em intervalos do Cloud Storage.

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