LoginSignup
28

More than 3 years have passed since last update.

【Firebase】FireStoreに一括でcsvまたはjson形式のデータをアップロードする

Posted at

概要

FireStoreは、モバイル開発においてとても便利なDatabaseの一つですが、データの一括importが少々手間取ったので方法を記載しておきます。

Step1: Jsonデータの用意

私の場合はMacのNumbersを使用して、CSVを作成し、CSV→Json変換サイトを用いてjsonデータに変換しています。

image.png

image.png

Step2: Service Key をFirebaseコンソールよりダウンロード

Service Key をFirebaseコンソールよりダウンロードします。
image.png
Screen Shot 2020-09-26 at 8.30.16 AM.png

Step3: node.js プロジェクトの設定

Screen Shot 2020-09-25 at 11.22.42 PM.png

上記のコマンド実行後、実行したディレクトリにPackage.jsonが生成されます。
Step1で生成したjsonファイル(data.json)Step2で生成したServiceKeyのファイル(serviceAccountKey.json)も同ディレクトリ内に格納します。

Step4: index.jsの作成

terminalで以下を実行。

npm install firebase-admin

すると、node_moduleというディレクトリが生成されます。
image.png

Firestoreにimport用のプログラムを作成します。

index.js
const admin = require('./node_modules/firebase-admin');
const serviceAccount = require("./serviceAccountKey.json");

const data = require("./data.json");
const collectionKey = "words"; //Change!! name of the collection

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://your-database.firebaseio.com" //Change!! your database URL
});

const firestore = admin.firestore();
const settings = {timestampsInSnapshots: true};
firestore.settings(settings);

if (data && (typeof data === "object")) {
    Object.keys(data).forEach(docKey => {
        firestore
        .collection(collectionKey)
        .doc(docKey)
        .set(data[docKey])
        .then((res) => {
            console.log("Document " + docKey + " successfully written!");
        }).catch((error) => {
            console.error("Error writing document: ", error);
        });
    });
}

Step4: 実行

node <Your_Project_Folder_Name>

すると
以下のように一括でインポートされました。
image.png

その他

nodeのバージョンが低いとスプレッド構文が対応していなかったり等あるので、バージョンが最新かどうか確認してください。

参考文献

How to upload data to Firebase Firestore Cloud Database

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
28