38
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cloud Firestore の import / export やってみた

Last updated at Posted at 2018-08-09

Firebase の import / export 機能がきたので、実際に試してみました。
Export and import data | Firebase

流れとしては以下のようになります。

  • gcloud のコマンドを使って Cloud Storage に export データを保存
  • import も Cloud Storage にあるデータを Firestore に復元

所感としては、いい感じに動いてそうです。

事前準備

Before you begin

  • Blaze plan でないと import / export は利用できない
  • export 用の Storage Bucket を作成
  • Firestore, Cloud Storage の権限が適切か確認

Storage Bucket はこんな感じで作りました。

スクリーンショット 2018-08-09 10.33.58.png

gcloud 設定

Set up gcloud for your project

GCP 管理画面から Shell を起動し、下記コマンドを打ちます。

gcloud config set project [PROJECT_ID]

Shell の起動はここからできます。

スクリーンショット 2018-08-09 11.40.50.png

Google Cloud SDK のセットアップ

これはローカルでやります。
私は macOS なので https://cloud.google.com/sdk/docs/quickstart-macos から 64bit のを DL してセットアップしました。
基本的に手順通りにやれば良いのですが、 alpha は別途 install が必要です。

$ gcloud components list
│ Not Installed  │ gcloud Alpha Commands                                │ alpha                    │   < 1 MiB │

デフォルトで aplha は利用できないので、 install して update します

$ gcloud components install alpha
$ gcloud components update

これで gcloud alpha firestore … が利用できるようになります。

export

Export all documents

全件 export をしてみます。

$ gcloud alpha firestore export gs://firestore-export
Waiting for [projects/hoge/databases/(default)/operations/XxxxXxXXXxXXXXxXXXXXXXXXXxxxxxxxx] to finish...done.
metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1beta1.ExportDocumentsMetadata
  operationState: PROCESSING
  outputUriPrefix: gs://firestore-export/2018-08-09T02:15:18_53592
  startTime: '2018-08-09T02:15:18.310360Z'

Storage を見てみると、このようなデータが作成されていました。

スクリーンショット 2018-08-09 11.53.16.png

output-0 から大量のファイルができています。これがバックアップファイルのようです。

import

Import all documents from an export

先ほど export したデータを import します。
id が同一だとエラーになるので、一度全てのデータを削除して import しました。

$ Waiting for [projects/hoge/databases/(default)/operations/XxxxXxXXXxXXXXxXXXXXXXXXXxxxxxxxx] to finish...done.
metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1beta1.ImportDocumentsMetadata
  inputUriPrefix: gs://firestore-export/2018-08-09T01:55:07_9048
  operationState: PROCESSING
  startTime: '2018-08-09T02:22:25.225520Z'
name: projects/hoge/databases/(default)/operations/XxxxXxXXXxXXXXxXXXXXXXXXXxxxxxxxx

Firestore の console をみると、 sub-collection 含めデータが復元されていました。

全てのデータのチェックはできないので完全かは不明ですが、ざっくり見た感じ問題はなさそうでした。
(import したデータを再度 export したら output ファイルの数が変わっていたので少し気になりますが)

Project A で export したものを Project B に import も試しましたが、問題なく実行されました。

export されたファイル

export されたファイルを BigQuery につっこめないかと思ったんですが難しそうです。
JSON 形式などなら良かったんですが、 vi で開くとこのようになっていました。

スクリーンショット 2018-08-09 12.07.51.png

そのため、 backup 専門の用途として使うべきでしょう。

38
23
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?