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:
Inicie o emulador do Datastore.
Os recursos de importação e exportação estão disponíveis para
cloud-datastore-emulator
nas versões 2.1.0 e mais recentes. Talvez seja necessário atualizar os componentes da Google Cloud CLI.Em operações de importação, verifique se os arquivos de exportação da entidade estão na mesma máquina que o emulador.
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]"}'
localhost:8081
se o emulador usar uma porta diferente.em que:
[PROJECT_ID]
é o ID do projeto;[ENTITY_EXPORT_FILES]
é o caminho para o arquivooverall_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]]}}'
localhost:8081
se o emulador usar uma porta diferente.em que:
[PROJECT_ID]
é o ID do projeto;[ENTITY_EXPORT_FILES]
é o caminho para o arquivooverall_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"}'
localhost:8081
se o emulador usar 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]]}}'
localhost:8081
se o emulador usar 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.