Help us understand the problem. What is going on with this article?

Cloud Firestore の import / export やってみた

More than 1 year has passed since last update.

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 専門の用途として使うべきでしょう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした