標籤:nodejs
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 endLine = false;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!");});//產生頭部var csvStream = csv.format({headers: true}).transform(function(row){return {編號: row.id,需求名稱: row.name};});//擷取資料資訊介面function searchData(){csvStream.pipe(stream);connection.query("select id,name from snz_requirements" , function(err , results, callback){// console.log(results);// csv.write(results, {headers: true}).pipe(stream);results.forEach(function(row){csvStream.write({id:row['id'], name: row['name']});});//關閉寫入csvStream.end();connection.end();});}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();
Nodejs fastCSV 實現資料的csv格式匯出