Nodejs csv文件上传的强大工具,直接转成json数据。
Nodejs csv文件上传的强大工具,直接转成json数据。
安装模块:package.json 添加 “ya-csv”:"*“ 然后:切换到目录中 npm install var csv = require(‘ya-csv’); var nation = req.files.nation.path; var reader = csv.createCsvFileReader(nation, { ‘separator’: ‘,’, ‘quote’: '”’, ‘escape’: ‘"’, ‘comment’: ‘’, ‘columnsFromHeader’: ‘true’, }); reader.addListener(‘data’, function(data) { if (data) { Nation.create(data, function(err, nation) { if (err) { res.json({ code: ‘ERR’, msg: ‘err’ + err }); }; if (nation) { nation.save(); res.json({ code: ‘OK’, msg: sprintf(‘success’) }); }; }) }; }); ==================另一种上传方式 fs.readFile(fname, function(err, data) { var data = gbk_to_utf8.convert(data); var str = data.toString(); var lines = str.split(’\r\n’); var fields_name = []; fields_name = lines.shift().split(’,’); var items = []; for (var i = 0; i < lines.length - 1; i++) { var row = {}; var fields = lines[i].split(’,’); row.lng = fields.shift(); row.nation_code = fields.shift(); row.nation_name = fields.shift(); items.push(row); };
if (items) {
Nation.create(items, function(err, nation) {
if (err) {
res.json({
code: 'ERR',
msg: 'err' + err
});
};
if (nation) {
nation.save();
res.json({
code: 'OK',
msg: sprintf('success')
});
};
})
};
})
Node.js CSV 文件上传并转换为 JSON 数据
安装必要的模块
首先,在你的 package.json
文件中添加以下依赖:
{
"dependencies": {
"ya-csv": "^0.2.6",
"express": "^4.17.1",
"multer": "^1.4.3"
}
}
然后执行安装命令:
npm install
示例代码
接下来,我们将使用 ya-csv
模块来读取上传的 CSV 文件,并将其转换为 JSON 对象。
const express = require('express');
const multer = require('multer');
const fs = require('fs');
const csv = require('ya-csv');
const app = express();
// 设置文件存储位置
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
const upload = multer({ storage: storage });
app.post('/upload', upload.single('nation'), (req, res) => {
const filePath = req.file.path;
// 使用 ya-csv 解析 CSV 文件
const reader = csv.createCsvFileReader(filePath, {
separator: ',',
quote: '"',
escape: '"',
comment: '',
columnsFromHeader: true
});
let data = [];
reader.addListener('data', function (dataObj) {
data.push(dataObj);
});
reader.addListener('end', function () {
// 将数据保存到数据库(这里假设有一个名为 Nation 的模型)
Nation.create(data, function (err, nations) {
if (err) {
return res.status(500).json({
code: 'ERR',
msg: 'Error saving to database: ' + err
});
}
return res.status(200).json({
code: 'OK',
msg: 'Success'
});
});
});
});
app.listen(3000, () => console.log('Server started on port 3000'));
说明
-
依赖模块:
express
: 用于创建 Web 服务器。multer
: 用于处理文件上传。ya-csv
: 用于解析 CSV 文件。
-
文件上传:
- 使用
multer
来处理文件上传。将上传的文件存储在uploads/
目录下。
- 使用
-
CSV 文件解析:
- 使用
ya-csv
创建一个csvFileReader
实例来读取 CSV 文件。 - 将每一行数据添加到数组
data
中。
- 使用
-
数据处理:
- 当读取完成时,调用
Nation.create
方法将数据保存到数据库。 - 如果发生错误,则返回错误信息;否则,返回成功信息。
- 当读取完成时,调用
这样,你就可以通过简单的 HTTP POST 请求上传 CSV 文件,并将其转换为 JSON 格式后保存到数据库中。
那啥 应该把“ya-csv”地址贴出来啊
请问你的 Nation.create 是哪来的
Nation.是模型对象,Nation.create的意思是创建当前对象,最后保存,这都是mongoose 中的,用来操作mongodb的。
在Node.js中,处理CSV文件并将其转换为JSON数据是一项常见的任务。你可以使用csv-parser
库来简化这一过程。以下是如何实现这一功能的示例代码:
首先,你需要安装csv-parser
库:
npm install csv-parser
接下来是具体的代码示例:
const fs = require('fs');
const csv = require('csv-parser');
// 假设文件路径是 './example.csv'
fs.createReadStream('./example.csv')
.pipe(csv())
.on('data', (data) => {
console.log(JSON.stringify(data)); // 打印每一行的数据作为JSON对象
})
.on('end', () => {
console.log('CSV文件已处理完毕');
});
解释
-
安装库:
npm install csv-parser
-
读取文件并解析:
- 使用
fs.createReadStream
创建一个可读流。 - 使用
.pipe(csv())
将流传递给csv-parser
进行解析。 csv-parser
会自动将每行CSV数据转换为一个对象(JSON)。
- 使用
-
处理每一行数据:
data
事件会在每次读取到一行数据时触发,并将该行数据作为JSON对象传递。- 这里我们简单地打印每一行数据,但你可以根据需要进行处理。
-
处理完成:
end
事件会在整个文件处理完成后触发,可以在这里添加一些清理或总结操作。
这种方法简洁且易于理解,适用于大多数简单的CSV到JSON转换需求。