node.js - 使用 NodeJS 从 CSV 填充 MongoDB

标签 node.js mongodb csv

我正在尝试使用 CSV 文件中的数据填充我的 MongoDB。我的 MongoDB 中目前没有数据库或集合,我想使用更新函数创建这些数据库或集合,该函数创建从 csv 文件解析的对象。

我正在使用 ya-csv 来解析我的 csv 文件和 Node 的 mongodb 驱动程序。

我的代码是这样的:

var csv = require('ya-csv');
var fs = require('fs');
var MongoClient = require('mongodb').MongoClient;
var Server = require('mongodb').Server;
var mongoclient = new MongoClient(new Server('localhost', 27017, {'native_parser' : true}));

var reader = csv.createCsvFileReader('YT5.csv', {columnsFromHeader:true,'separator':   ','});
reader.addListener('data', function(data){
var nameHolder = data.name;
//I have no issue getting the needed variables from my csv file
mongoclient.db(nameHolder).collection('assets').update({assetId:data.assetId,name:data.name},{upsert:true},function(err,updated){if(err){console.log(err)}});

reader.addListener('end', function(data){
console.log("done");
}

我还没有为此创建数据库或集合,但它可以通过这次更新为我做这件事吗?我得到一个错误:

[Error: Connection was destroyed by application]

当我运行它时,数据库已创建,但它们是空的。 任何帮助将不胜感激。

最佳答案

除非有使用 NodeJS 的特定需求,比如不仅要重新排序而且要对从 CSV 文件读取的字段进行一些复杂的修改,请使用 mongoimport

如果您需要做的只是跳过和重新排序某些字段 - 使用简单的 awk 处理这些字段,根据需要跳过和更改顺序:

猫/tmp/csv | awk -F',' 'BEGIN{OFS=","} {print $1,$2,$4,$3,$10}' | mongoimport --type csv --db 测试 --collection csv_import

此外,如果需要根据 csv 值更改集合或数据库名称(本例中的字段 10 作为数据库名称,字段 11 作为集合):

猫/tmp/csv | awk -F',' 'BEGIN{OFS=","} {打印 $1,$2,$4,$3,$10 | "mongoimport --type csv --db "$10"--collection "$11 }'

或者您可以先将文件拆分为每个数据库/集合 block 。

关于node.js - 使用 NodeJS 从 CSV 填充 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964261/

相关文章:

javascript - Connect-redis 商店不适用于 socket.io

bash - GOLANG 检查mongodb是否正在运行

Python将简历图像存储在mongodb gridfs中

javascript - 如何在 express js 中使用 get 方法从 mongo db 中获取数据?

javascript - 从 csv 文件拆分

javascript - Node.Js Crypto - 签名和取消签名 JSON

javascript - 如何在 Jest 中使用 doMock?

Python:如何将元组值字典写入 csv 文件?

java - 获取 csv 并比较行。数组列表? java

javascript - 如何为 TypeORM 指定 ormconfig.ts?