数据导入导出
实现CSV/Excel数据导入导出
提示词
请实现数据导入导出功能:
需求:
- 导入:CSV/Excel上传,解析,验证,批量入库
- 导出:查询数据导出为CSV/Excel
- 数据量:[如单次1万条]
- 验证:必填、格式、重复检查
要求:
1. 文件解析(流式处理大文件)
2. 数据验证和错误报告
3. 批量插入(分批)
4. 导出时流式响应
5. 进度反馈
6. 模板下载示例输出
导出CSV:
app.get('/api/export', async (req, res) => {
res.setHeader('Content-Type', 'text/csv');
res.setHeader('Content-Disposition', 'attachment; filename=data.csv');
const stringifier = csv.stringify({ header: true });
stringifier.pipe(res);
// 流式查询,避免内存溢出
const batchSize = 1000;
let offset = 0;
while (true) {
const rows = await Data.findAll({ limit: batchSize, offset });
if (!rows.length) break;
rows.forEach(row => stringifier.write(row.toJSON()));
offset += batchSize;
}
stringifier.end();
});导入CSV:
app.post('/api/import', upload.single('file'), async (req, res) => {
const results = { success: 0, errors: [] };
const parser = csv.parse({ columns: true });
fs.createReadStream(req.file.path)
.pipe(parser)
.on('data', async (row) => {
try {
validateRow(row); // 验证
await Data.create(row);
results.success++;
} catch (err) {
results.errors.push({ row, error: err.message });
}
});
res.json(results);
});评论 0
更多
登录后可点赞、收藏、评论和举报。
还没有评论,先发起一个具体问题。