FirestoreのデータをCSVとして出力する方法

2019年5月18日

現時点(2018年12月時点)ではFirestoreは未だベータ版な上に公式がCSVのimport / exportに対応していないため、自分でimport / exportをサポートするアプリケーションを作らないといけません。この記事では簡易的に作った、firestoreにcsvのimport / exportをサポートするアプリケーションについて書いて行きます。

FirestoreにCSVをImportする方法」を先にご覧になった場合、1-1. で記述している「json2csv」のnpmをインストールしている以外は大体同じですので、「json2csv」をインストールしたら2-2. エクスポートの流れまで読み飛ばして頂いて大丈夫です。

1. 準備する

1-1. モジュールのインポートと初期設定

Import / export用のアプリケーションにはNode.jsを使います。それではアプリケーションを作るディレクトリへ移動し、以下のモジュールをターミナルからインストールしましょう。

  1. firebase-admin
  2. fs
  3. json2csv

必要なモジュールをインストールしたら、package.jsonを作りましょう。

package.jsonに記載する情報を聞かれるので、順に答えて行ってください。以下、参考です。

1-2. Firebase ServiceAccountの用意

Firebase Admin SDKを使うには、ServiceAccountのjsonファイルが必要になります。ServiceAccountファイルは、Firebaseの管理画面の「プロジェクトの設定」>「サービスアカウント」からダウンロード出来ます。ダウンロードしたファイルをさっき作成したpackage.jsonと同じ階層に入れてください。

2. コーディング

2-1 Adminの初期化

準備は整いましたので、index.jsのファイルを作成し、firebase adminの初期化を行いましょう。初期化のコードはFirebase 管理画面の「プロジェクト設定」>「サービスアカウント」のAdmin SDK構成スニペットからコピペ出来ます。

2-2. エクスポートの流れ

FirestoreのデータをCSVにエクスポートする流れとしては、以下のようになっています:

  1. FirestoreのコレクションデータをJSONとして書き出す
  2. 書き出したJSONファイルをCSVに変換する

collectionがいっぱいある場合、いちいちファイルにcollection名を書き込むのも面倒なので、process.argv[2]でターミナルコマンドの2番目の引数を取ってくるようにしています。そしてcollectionから取得したデータを空の配列に格納し、fs moduleを使いJSONファイルとして書き出しています。

最終的に、index.jsは以下のようになっているはずです:

3. JSONファイルをCSVに変換

JSONファイルがあるディレクトに移動し、以下のコマンドをターミナルに打ってください:

見た通りですが、ヘッダを指定してCSVファイルに変換しています。成功している場合、JSONファイルと同じディレクトリ先に出力されているはずです。

以上、個人的に作ったFirestoreのCSV exportをサポートする簡易的なアプリケーションでした。Importの方にもご興味がある方はこちらの記事に書いていますので、よろしければご覧ください。