エミュレータ データのエクスポートとインポート

Datastore エミュレータのインポートおよびエクスポート機能を使用して、データベース インスタンスからデータをエクスポートし、それをエミュレータに読み込むことができます。エミュレータからデータをエクスポートして、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 バケット内で利用可能になったら、エンティティのエクスポートとインポートの説明に従って、データをデータベースにインポートできます。