一、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 的个数必须与表格列数相对应,否则会报错。
+++
+++
++++++
+++
+++
+++
+++
+++
+++
+++
+++