您可以使用 Datastore 模擬器的匯入和匯出功能,從資料庫執行個體中將資料匯出,然後載入模擬器中。您也可以從模擬器中將資料匯出,然後載入 Datastore 模式資料庫中。
事前準備
使用 Datastore 模擬器的匯入和匯出功能之前,請先完成以下操作:
-
cloud-datastore-emulator
2.1.0 以上版本才提供匯入和匯出功能。您可能需要更新 Google Cloud CLI 元件。 如要執行匯入操作,務必確認您的實體匯出檔案與模擬器位於同一部機器上。
將實體匯入模擬器中
模擬器的匯入功能可讓您從一組實體匯出檔案將實體載入到模擬器中。實體匯出檔案可以從您的 Datastore 模式資料庫匯出,也可以從模擬器執行個體匯出。
如要將實體匯入模擬器中,請對模擬器傳送 POST
匯入要求。您可以使用 curl 或類似的工具。例如,下列要求會將一組實體匯出檔案中的所有實體匯入模擬器中。
通訊協定
curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:import \ -H 'Content-Type: application/json' \ -d '{"input_url":"[ENTITY_EXPORT_FILES]"}'
localhost:8081
。其中:
[PROJECT_ID]
是專案的 ID。[ENTITY_EXPORT_FILES]
是您實體匯出檔案中overall_export_metadata
檔案的路徑。例如:{"input_url":"/home/user/myexports/2019-02-04T19:39:33_443/2019-02-04T19:39:33_443.overall_export_metadata"}
從特定種類和命名空間匯入實體
您可以指定使用實體篩選器來單獨匯入特定種類或命名空間的實體。不過,只有在匯出是使用實體篩選器建立的情況下,您才能指定實體篩選器。
在實體篩選器中指定種類或命名空間:
通訊協定
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
。其中:
[PROJECT_ID]
是專案的 ID。[ENTITY_EXPORT_FILES]
是您實體匯出檔案中overall_export_metadata
檔案的路徑。例如:{"input_url":"/home/user/myexports/2019-02-04T19:39:33_443/2019-02-04T19:39:33_443.overall_export_metadata"}
[KIND_NAMES]
是種類的清單:"kinds":["KIND_1", "KIND_2"]
[NAMESPACES]
是命名空間 ID 的清單:"namespace_ids":["NAMESPACE_1", "NAMESPACE_2"]
在模擬器中匯出實體
模擬器的匯出功能可讓您將模擬器中的實體儲存為一組實體匯出檔案。之後您就可以使用匯入操作,將實體匯出檔案中的實體載入 Datastore 模式資料庫或模擬器執行個體中。
如要將模擬器執行個體中的實體匯出,請對模擬器傳送 POST
匯出要求。您可以使用 curl 或類似的工具。例如,下列要求會將模擬器中的所有實體匯出:
通訊協定
curl -X POST localhost:8081/v1/projects/[PROJECT_ID]:export \ -H 'Content-Type: application/json' \ -d '{"output_url_prefix":"EXPORT_DIRECTORY"}'
localhost:8081
。其中:
[PROJECT_ID]
是專案的 ID。[EXPORT_DIRECTORY]
會指定模擬器儲存實體匯出檔案的目錄。此目錄中不能已有一組實體匯出檔案。例如:{"output_url_prefix":"/home/user/myexports/2019-02-04/"}
從特定種類和命名空間匯出實體
您可以指定使用實體篩選器來單獨匯出特定種類或命名空間的實體。
在實體篩選器中指定種類或命名空間:
通訊協定
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
。其中:
[PROJECT_ID]
是專案的 ID。[EXPORT_DIRECTORY]
會指定模擬器儲存實體匯出檔案的目錄。此目錄中不能已有一組實體匯出檔案。例如:{"output_url_prefix":"/home/user/myexports/2019-02-04/"}``
[KIND_NAMES]
是種類的清單:"kinds":["KIND_1", "KIND_2"]
[NAMESPACES]
是命名空間 ID 的清單:"namespace_ids":["NAMESPACE_1", "NAMESPACE_2"]
將模擬器資料載入資料庫中
模擬器建立的實體匯出檔案能夠與 Datastore 模式資料庫的代管匯入功能相容。
您必須先 將實體匯出檔案上傳到 Cloud Storage 值區,才能將從模擬器匯出的實體載入到資料庫中。代管匯入功能只會從 Cloud Storage 值區讀取資料。
只要 Cloud Storage 值區有您的實體匯出檔案,您就可以依照匯出與匯入實體一文中所述,將資料匯入資料庫中。