You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js实现CSV转JSON分批插入MongoDB(每批100条)求助

分批插入CSV数据到MongoDB的解决方案

要实现每100条数据一批插入MongoDB,你可以通过拆分JSON数组为小块,再循环处理每一批的方式来实现,以下是修改后的完整代码:

import csvtojson from "csvtojson";
import { DBCSV } from "./Db.js";
import mongoose from "mongoose";

const DB_URL =
  "mongodb+srv://mern:MERN@cluster0.nmswu.mongodb.net/CsvRecords?retryWrites=true&w=majority";

mongoose
  .connect(DB_URL, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log("db connected"))
  .catch((err) => console.log(err));

// 将数组拆分为指定大小的批次
function chunkArray(arr, chunkSize) {
  const chunks = [];
  for (let i = 0; i < arr.length; i += chunkSize) {
    chunks.push(arr.slice(i, i + chunkSize));
  }
  return chunks;
}

csvtojson()
  .fromFile("MCQ.csv")
  .then(async (jsonObj) => {
    const batchSize = 100;
    const dataChunks = chunkArray(jsonObj, batchSize);
    
    // 逐批插入数据,带错误捕获
    for (const chunk of dataChunks) {
      try {
        await DBCSV.insertMany(chunk);
        console.log(`已插入一批共${chunk.length}条MCQ数据`);
      } catch (err) {
        console.error(`该批数据插入失败:`, err);
      }
    }
    
    console.log("所有MCQ数据插入完成");
  })
  .catch((err) => console.error("读取CSV文件出错:", err));

关键逻辑说明

  • 拆分数组:chunkArray函数把转换后的JSON数组按100条为一组拆分,避免一次性向数据库提交大量数据
  • 异步分批插入:使用async/await配合for...of循环,确保每一批数据插入完成后再处理下一批,便于错误追踪和控制数据库负载
  • 错误处理:每一批插入单独做错误捕获,某一批失败不会中断整个插入流程,方便定位问题数据

内容的提问来源于stack exchange,提问作者Abdullah Bhatti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:31:06