Esportazione e importazione dei dati dell'emulatore

Utilizzando le funzionalità di importazione ed esportazione dell'emulatore Datastore, puoi esportare i dati dall'istanza di database e caricarli nell'emulatore. Puoi anche esportare i dati dall'emulatore e caricarli nel database della 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 versione 2.1.0 e successive. Potrebbe essere necessario 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 in cui si trova l'emulatore.

Importa entità nell'emulatore

La funzionalità di importazione dell'emulatore ti consente di caricare nell'emulatore le entità da un insieme di file di esportazione delle entità. 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 di POST all'emulatore. Puoi usare curl o uno strumento simile. Ad esempio, la richiesta seguente importerà nell'emulatore tutte le entità da un insieme di file di esportazione delle entità:

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 un'altra porta.

dove:

  • [PROJECT_ID] è l'ID del 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 di entità per importare le entità solo da tipi o spazi dei nomi specifici. Puoi specificare un filtro per entità solo se l'esportazione è stata creata utilizzando un filtro entità.

Specifica i tipi o gli spazi dei nomi in un filtro di 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 un'altra porta.

dove:

  • [PROJECT_ID] è l'ID del 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"]

Esporta 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 usare curl o uno strumento simile. Ad esempio, la richiesta seguente esporterà 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 un'altra porta.

dove:

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

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

Esporta 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 i tipi o gli spazi dei nomi in un filtro di 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 un'altra porta.

dove:

  • [PROJECT_ID] è l'ID del progetto.
  • [EXPORT_DIRECTORY] specifica la directory in cui l'emulatore salva i file di esportazione delle entità. Questa directory non deve contenere già un set 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 tuo 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 nel database le entità esportate dall'emulatore, devi caricare i file di esportazione delle entità in un bucket Cloud Storage. La funzionalità di importazione gestita legge solo dai bucket Cloud Storage.

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