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