【问题标题】: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 个文档,所以.. 我的解决方案是使用该方法异步循环并插入直到流完成..