0
2

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 3 years have passed since last update.

Firebase Realtime Database からエクスポートした JSON を CSV に変換する

Last updated at Posted at 2021-07-19

概要

Firebase Realtime Database で取得していたログを Excel で集計しようと思い、いざエクスポートしようとしたら JSON でしかエクスポートできないじゃん?ってなったので、エクスポートした JSON を CSV に変換する雑な node.js のコードをメモしておく。(改めて調べたら既存ライブラリがあったのでそちらでも良いのかもしれない)

image.png

少ししか調べていないが、Web インタフェースだけではなく SDK や CLI 経由でもおそらく JSON しか取得できない。

JSON -> CSV 変換コード

gist にも載せてる、無駄な処理が多いが結果はうまくいった。
https://gist.github.com/yakimelon/123cba8c227562ce141792908a4d9ecd

JsonToCsv.js
function replace(text) {
    return text
        // 余計な文字の削除
        .replace(/(".*" : \{|\{|\}|".*" : |^      )/g, '')
        // 1つのデータの塊を1列に変換
        .replace(/",\r?\n/g, '", ')
        // 半角スペースをすべて削除
        .replace(/ /g, '')
        // 行間のカンマとその行を削除
        .replace(/"\r?\n,/g, '"')
        // 行と行の間にある3つの改行を1つに変換する
        .replace(/\r?\n\r?\n/g, '\n')
}

const fs = require('fs');
const text = fs.readFileSync("input.json", 'utf-8');
console.log(replace(text));

try {
    fs.writeFileSync("output.csv", replace(text));
    console.log("Success!");
} catch(e) {
    console.log("Failed...")
}

使い方

  1. node.js の環境構築をする
  2. 任意のフォルダを作る
  3. 上記 js コードを JsonToCsv.js という名前で同じフォルダに配置
  4. 変換したい json ファイルを input.json という名前で同じフォルダに配置
  5. node JsonToCsv.js を実行する
  6. 変換された csv ファイルが output.csv という名前で出力される

まとめ

軽いコードを書こうと思ったときに node.js は意外と便利でした。

0
2
0

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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?