Esportazione e importazione dei dati dell'emulatore

Utilizzando le funzionalità di importazione ed esportazione dell'emulatore Datastore, puoi esportare i dati dall'istanza del database e caricarli nell'emulatore. Puoi anche esportare i dati dall'emulatore e caricarli nel database in modalità Datastore.

Prima di iniziare

Prima di utilizzare le funzionalità di importazione o esportazione dell'emulatore Datastore, completa quanto segue:

  • Avvia l'emulatore Datastore.

    Le funzionalità di importazione ed esportazione sono disponibili per cloud-datastore-emulator le versioni 2.1.0 e successive. Potresti dover aggiornare i componenti di Google Cloud CLI.

  • Per le operazioni di importazione, assicurati che i file di esportazione delle entità si trovino sulla stessa macchina dell'emulatore.

Importa le entità nell'emulatore

La funzionalità di importazione dell'emulatore ti consente di caricare le entità da un insieme di file di esportazione delle entità nell'emulatore. I file di esportazione delle entità possono provenire da un'esportazione del database in modalità Datastore o di un'istanza dell'emulatore.

Per importare le entità nell'emulatore, invia una richiesta di importazione POST all'emulatore. Puoi utilizzare curl o uno strumento simile. Ad esempio, la seguente richiesta importa tutte le entità da un insieme di file di esportazione delle entità nell'emulatore:

Protocollo

curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:import \
-H 'Content-Type: application/json' \
-d '{"input_url":"[ENTITY_EXPORT_FILES]"}'
Modifica localhost:8081 se l'emulatore utilizza una porta diversa.

dove:

  • [PROJECT_ID] è l'ID del tuo progetto.
  • [ENTITY_EXPORT_FILES] è il percorso del file overall_export_metadata dei file di esportazione delle entità. Ad esempio:

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

Importa entità da tipi e spazi dei nomi specifici

Puoi specificare un filtro delle entità per importare entità solo da tipi o spazi dei nomi specifici. Puoi specificare un filtro delle entità solo se l'esportazione è stata creata utilizzando un filtro delle entità.

Specifica tipi o spazi dei nomi in un filtro delle entità:

Protocollo

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 se l'emulatore utilizza una porta diversa.

dove:

  • [PROJECT_ID] è l'ID del tuo progetto.
  • [ENTITY_EXPORT_FILES] è il percorso del file overall_export_metadata dei file di esportazione delle entità. Ad esempio:

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

  • [KIND_NAMES] è un elenco di tipi: "kinds":["KIND_1", "KIND_2"]

  • [NAMESPACES] è un elenco di ID spazio dei nomi:

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

Esportare le entità nell'emulatore

La funzionalità di esportazione dell'emulatore ti consente di salvare le entità nell'emulatore in un insieme di file di esportazione delle entità. Puoi quindi utilizzare un'operazione di importazione per caricare le entità nei file di esportazione delle entità nel database in modalità Datastore o in un'istanza dell'emulatore.

Per esportare le entità in un'istanza dell'emulatore, invia una richiesta di esportazione POST all'emulatore. Puoi utilizzare curl o uno strumento simile. Ad esempio, la seguente richiesta esporta tutte le entità nell'emulatore:

Protocollo

curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:export \
-H 'Content-Type: application/json' \
-d '{"output_url_prefix":"EXPORT_DIRECTORY"}'
Modifica localhost:8081 se l'emulatore utilizza una porta diversa.

dove:

  • [PROJECT_ID] è l'ID del tuo progetto.
  • [EXPORT_DIRECTORY] specifica la directory in cui l'emulatore salva i file di esportazione delle entità. Questa directory non deve già contenere un insieme di file di esportazione delle entità. Ad esempio:

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

Esportare entità da tipi e spazi dei nomi specifici

Puoi specificare un filtro delle entità per esportare le entità solo da tipi o spazi dei nomi specifici.

Specifica tipi o spazi dei nomi in un filtro delle entità:

Protocollo

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 se l'emulatore utilizza una porta diversa.

dove:

  • [PROJECT_ID] è l'ID del tuo progetto.
  • [EXPORT_DIRECTORY] specifica la directory in cui l'emulatore salva i file di esportazione delle entità. Questa directory non deve già contenere un insieme di file di esportazione delle entità. Ad esempio:

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

  • [KIND_NAMES] è un elenco di tipi: "kinds":["KIND_1", "KIND_2"]

  • [NAMESPACES] è un elenco di ID spazio dei nomi:

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

Carica i dati dell'emulatore nel database

I file di esportazione delle entità creati dall'emulatore sono compatibili con la funzionalità di importazione gestita per i database in modalità Datastore.

Prima di poter caricare le entità esportate dall'emulatore nel database, devi caricare i file di esportazione delle entità in un bucket Cloud Storage. La funzionalità di importazione gestita legge solo dall'interno dei bucket Cloud Storage.

Una volta che i file di esportazione delle entità sono disponibili in un bucket Cloud Storage, puoi importare i dati nel tuo database come descritto in Esportare e importare entità.