gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:24:47 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com