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 バケット内で利用可能になったら、エンティティのエクスポートとインポートの説明に従って、データをデータベースにインポートできます。