knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

mongoDBに CSVアップロード機能を追加

index:

概要:

mongodbに、node.js でCSVファイルから
アップロード機能を追加する内容となります

・前回の、express 版のchart.js グラフ機能
 に追加しています。
コマンドラインから、実行する形です。

概要

mongo DB 2.4.14
node.js 10.16.0
mongo shell (mongo)

参考のコード

github.com

CSV ファイルの読み書き

・読みこみ
https://github.com/kuc-arc-f/app4_csv/blob/master/csv_import.js

readline 使用しました。
日付書式は、 javascript date型に変換しています。

    var rs = fs.createReadStream( input_file );
    var readline = require('readline');   
    var rl = readline.createInterface(rs, {});
   
    var items = []
    var i = 0;
    rl.on('line', function(line) {
        if(i > 0){
            if(line.length > 0){
               col = line.split(",")
//console.log( col.length );
                if(col.length >= 3){
                    items.push( col )
                }
            }
        }
        i += 1;
    })    
    .on('close', function() {
//        console.log( items );
        proc_arr_check(items)
    });

CSV出力
https://github.com/kuc-arc-f/app4_csv/blob/master/csv_output.js
writeFileSync を使用

    var db = monk(db_setting);
    var collection = db.get('mdats');
    var fnm = "dat/outout.csv";
    //
    var text = "date,H,L,\n";
    collection.find({}, {sort: { mdate: 1}} ,function(e,docs){
        docs.forEach( function (item) {
//console.log( item );
            var date = utl.convert_date2str(item.mdate)
            var hnum = item.hnum
            var lnum = item.lnum
            text += date +"," + hnum +"," + lnum + "\n"
        });
        db.close()
        try {
            fs.writeFileSync(fnm , text);
            console.log('write end');
        }catch(e){
            console.log(e);
        }
    });

前回の、測定値グラフに反映

f:id:knaka0209:20190817143608p:plain

一括アップロードで、楽になりました

参考のページ

knaka0209.hatenablog.com