GUIDE

Firestore のデータを CSV でエクスポートする3つの方法

「Firestore のデータを Excel やスプレッドシートで見たい」は、運用が始まると必ず出てくる要望です。 ところが Firebase コンソールには CSV エクスポート機能がありません。この記事では、実際に使える 3つの方法を、それぞれの落とし穴と一緒に紹介します。

方法0: Firebase コンソール・gcloud では「できない」

まず前提の整理です。

  • Firebase コンソールにエクスポート機能はありません(1件ずつ目視のみ)
  • gcloud firestore exportはバックアップ用のバイナリ形式(LevelDB)で出力されるため、 そのままでは Excel やスプレッドシートで開けません。BigQuery に読み込めば SQL で触れますが、 「ちょっと CSV がほしい」には大げさです

方法1: Node.js スクリプトを書く(無料・要コード)

firebase-admin を使えば数十行で書けます。最小構成の例です。

import { initializeApp, cert } from "firebase-admin/app";
import { getFirestore } from "firebase-admin/firestore";
import { writeFileSync } from "node:fs";

initializeApp({ credential: cert("./serviceAccount.json") });
const db = getFirestore();

const snap = await db.collection("users").get();
const rows = snap.docs.map((d) => ({ id: d.id, ...d.data() }));

// ヘッダーは全ドキュメントのキーの和集合から作る(欠損フィールド対策)
const headers = [...new Set(rows.flatMap((r) => Object.keys(r)))];
const esc = (v) => `"${String(v ?? "").replace(/"/g, '""')}"`;
const csv = [
  headers.join(","),
  ...rows.map((r) => headers.map((h) => esc(r[h])).join(",")),
].join("\n");

writeFileSync("users.csv", "\uFEFF" + csv); // BOM を付けると Excel で文字化けしない

シンプルに見えますが、実運用では次の罠を踏みます。

  • Timestamp / GeoPoint / Reference 型はそのまま文字列化すると[object Object] になる。型ごとの変換処理が必要
  • ネストしたマップや配列をどう平坦化するか(address.city のようなドット記法にするか、JSON 文字列で埋めるか)を決める必要がある
  • 再インポートすると型が壊れる。CSV には型情報がないため、25 が string だったのか number だったのかが失われます
  • 数万件を超えるコレクションではページネーション(カーソル)処理が必要

1回きりの用途ならスクリプトで十分です。毎週・毎月やるなら、次の方法を検討してください。

方法2: GUI ツールでエクスポートする(ノーコード)

筆者が開発している Firescope(Firestore GUI クライアント、Mac / Windows)では、 表示中のグリッド(フィルタ・ソートを反映した状態)をそのまま CSV に書き出せます。

  • 型注釈行つき CSV — 各列の型(string / int / timestamp …)をヘッダー直下に 出力するため、再インポートしても型が崩れません(Excel で編集 → 戻す往復が安全)
  • Timestamp は読める日時文字列に、ネストは自動でフラット化
  • クエリ・フィルタ結果だけの部分エクスポートも可能
  • 逆方向(CSV → Firestore へのインポート)も、ドライラン付きのウィザードで実行できます
Firescope のグリッド表示。この画面から CSV出力ボタンでエクスポートできる
Firescope のグリッド表示。この画面から CSV出力ボタンでエクスポートできる

CSV エクスポートは無料版(トライアル終了後)でも使えます。 スクリプトを書かずに済ませたい方はこちらが最短です。

まとめ: どの方法を選ぶべきか

  • 1回だけ・エンジニアが自分で使う → Node.js スクリプト
  • BigQuery で分析までしたい → gcloud export + BigQuery
  • 定期的に必要・チームの非エンジニアも使う・再インポートもしたい → GUI ツール(Firescope)

14日間、全機能を無料で試す

登録不要・支払い情報不要。CSV エクスポートは期限後も無料で使えます。

Firescope をダウンロード(Mac / Windows)