Nodejs fastCSV 實現資料的csv格式匯出,nodejsfastcsv
Nodejs實現CSV格式的資料匯出
使用的第三方包:
fast-csv: npm install fast-csv
async: npm install async
mysql: npm install mysql
在這個實現中使用mysql資料來源將mysql中的資料匯入到對應的csv檔案中。
/** * 實現dump資料到csv檔案資料中 * 匯出csv資料模版 **/ var config = require('./info.json'); var fs = require("fs"); var csv = require('fast-csv'); var async = require("async"); var mysql = require('mysql'); var connection = mysql.createConnection({ host : config['mysql']['host'], user : config['mysql']['user'], password : config['mysql']['pwd'], database : config['mysql']['db'] });//用於判斷是否是最後一個資料資訊var stream = null;var paramArgus = process.argv.splice(2);if(!paramArgus || paramArgus.length == 0){stream = fs.createWriteStream("new.csv");}else{stream = fs.createWriteStream(paramArgus[0]);}stream.on("finish", function(){console.log("dump to csv ok!");});function asyncToCSV(){async.auto({createData: function(callDo){connection.query("select id,name from snz_requirements" , function(err , results, callback){if(callDo) callDo(null , results);});},//依次執行的處理findData: ['createData' , function(callDo , value){var reqValue = value['createData'];async.map(reqValue, function(row, callback) { connection.query("select count(*) as countV from snz_modules where requirement_id=?", row["id"] , function(err , results, callbackDeal){row["count"] = results[0].countV;if(callback) callback(null , row);});}, function(err,results) { //當整個map中的資料都執行完成之後才會執行下一個隊列中的functionif(callDo) callDo(null , results);});}], showDetail: ['findData' , function(callDo , value){//通過csv寫入到輸出資料流中儲存到csv檔案csv.write(value['findData'], {headers: true}).pipe(stream);connection.end();if(callDo) callDo(null , "end!");}]},function(err , value){// console.log(value);});}asyncToCSV();