Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用NodeJS从CSV填充MongoDB_Node.js_Mongodb_Csv - Fatal编程技术网

Node.js 使用NodeJS从CSV填充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

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

我正在使用yacsv解析我的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]
当我运行这个程序时,会创建数据库,但它们是空的。
任何帮助都将不胜感激。

如果您在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文件发送到不同的数据库-因此列中的每个唯一值都将是不同的数据库。这就像一个符咒一样工作-我不知道您可以像那样通过管道传递变量。感谢您的帮助,但文件太大,我无法立即使用此路径结果。