Node.js 使用NodeJS从CSV填充MongoDB
我正在尝试使用CSV文件中的数据填充我的MongoDB。我的MongoDB中目前没有数据库或集合,我希望使用更新函数创建这些数据库或集合,该函数创建从csv文件解析的对象 我正在使用yacsv解析我的csv文件和node的mongodb驱动程序 我的代码如下所示:Node.js 使用NodeJS从CSV填充MongoDB,node.js,mongodb,csv,Node.js,Mongodb,Csv,我正在尝试使用CSV文件中的数据填充我的MongoDB。我的MongoDB中目前没有数据库或集合,我希望使用更新函数创建这些数据库或集合,该函数创建从csv文件解析的对象 我正在使用yacsv解析我的csv文件和node的mongodb驱动程序 我的代码如下所示: var csv = require('ya-csv'); var fs = require('fs'); var MongoClient = require('mongodb').MongoClient; var Server = r
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]
当我运行这个程序时,会创建数据库,但它们是空的。
任何帮助都将不胜感激。如果您在javascript数组中转换csv行(每行都是一个对象),您可以使用,除非特别需要使用NodeJS,比如说不仅要重新排序而且要对从csv文件读取的字段进行一些复杂的修改,请使用mongoimport 如果您只需跳过某些字段并对其重新排序,请使用简单的awk处理这些字段,根据需要跳过并更改顺序:
cat/tmp/csv | awk-F',''BEGIN{OFS=“,”}{print$1、$2、$4、$3、$10}'| mongoimport--type csv--db test--collection csv|u import
此外,如果需要根据csv值更改集合或db名称(本例中的字段10用作db名称,字段11用作集合):
cat/tmp/csv | awk-F','BEGIN{OFS=“,”}{print$1、$2、$4、$3、$10 |“mongoimport--type csv--db“$10”--collection“$11}”
或者,您可以先将文件拆分为每个db/集合块。为什么不使用mongoimport?我想根据.csv文件中的条件创建不同的数据库。mongoimport似乎允许我导入整个.csv,但不允许对其进行解析、提取值和导入。是否要将同一个csv文件保存到不同的数据库?是,基于一列中的数据,将同一个csv文件发送到不同的数据库-因此列中的每个唯一值都将是不同的数据库。这就像一个符咒一样工作-我不知道您可以像那样通过管道传递变量。感谢您的帮助,但文件太大,我无法立即使用此路径结果。