借助 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 存储分区后,您可以按照导出和导入实体中的说明将数据导入数据库。