zip解压+csv文件读取与保存

一、zip文件解压

var fs      = require('fs');
var unzip   = require("unzip");
var iconv   = require('iconv-lite');
var csv     = require('fast-csv');
var path    = require('path');
fs.createReadStream(path.join(__dirname,'../../zip/test.zip' ))  //压缩包路径
   .pipe(unzip.Extract({ 
        path: path.join(__dirname,'../../unzip')  //解压后文件的路径
    }));
    console.log('解压完成');

   /**
     * 读取压缩包中文件列表
   */
   fs.createReadStream(path.join(__dirname,'../../zip/test.zip'))
       .pipe(unzip.Parse())
        /**
         * 压缩包中有几个文件这里就会执行几次。
         */
         .on('entry', function (entry) {
                var unzipFileName = entry.path;
                console.log('解压以后的文件名:%s',unzipFileName);
         });

/**
 * fast-csv 阅读 CSV文件
 * @param fileName   文件名称
 */
function readCSVfile(fileName){
    var csvData = [];
/**
*  定义对应与csv的列名,如:csv列名分别为:'支付宝交易号','商户订单号','业务类型'
   我们用 'dealNum','orderNum','type' 来分别对应,用于向 数据库中保存。
*
*/
    var headers = ['dealNum','orderNum','type'];  
    //headers : ['支付宝交易号','商户订单号','业务类型'],
    var stream = fs.createReadStream(path.join(__dirname,'../../unzip/' + fileName))
        .pipe(iconv.decodeStream('GBK'));   // 用 iconv 对流进行 GBK转码。
    csv
        .fromStream(stream,{
            headers : headers,
            trim : true
        })
        .on("data", function(data){
            csvData.push(data);
            console.log(csvData);
        })
        .on("end", function(){
            console.log("done");
        });
}

注意:我们定义的headers 的个数必须与表格列数相对应,否则会报错。

+++
+++
++++++
+++
+++
+++
+++
+++
+++
+++
+++

你可能感兴趣的:(zip解压+csv文件读取与保存)