【问题标题】:Streaming a large CSV file into a mongoDB database using mongoose使用 mongoose 将大型 CSV 文件流式传输到 mongoDB 数据库
【发布时间】:2019-03-06 04:26:15
【问题描述】:

正在寻找一种将大量(1000 万行)csv 数据流式传输到 mongoose 数据库中的高效且快速的方法。

出现的问题是处理流而不是导入,这可以通过 fs.createReadStream 解决(尽管仍在学习如何使用它)以及如何处理使用 mongoose 将大量数据插入到 mongoDB 中,因为 mongoose/带有插入请求的 mongo 可能会导致一些错误。

【问题讨论】:

  • 你找到解决办法了吗?

标签: node.js mongoose filestream


【解决方案1】:

您只需要 'stream-to-mongo-db' 和 'csvtojson' npm 库。 这是我用来从 BIG csv 文件中转储数百万条记录的示例代码。它只是工作!

const fs = require('fs');
const csv = require('csvtojson');
const streamToMongoDB = require('stream-to-mongo-db').streamToMongoDB;

const csvFile = './bigFiles.csv';
const dbURL = 'mongodb://localhost/tweets';
const collection = 'tweets';

fs.createReadStream(csvFile)
  .pipe(csv())
  .pipe(streamToMongoDB({ 
  	dbURL : dbURL, collection : collection
  }))

【讨论】:

    【解决方案2】:

    mongoose 中有一个 insertMany() 方法。但这只能让您每次只插入 10 000 个文档,所以.. 我的解决方案是使用该方法异步循环并插入直到流完成..

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 1970-01-01
      • 2013-07-15
      • 2014-08-07
      • 2012-06-18
      • 2019-11-27
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      相关资源
      最近更新 更多