Mon*_*757 3 csv mongodb node.js
我正在尝试使用CSV文件中的数据填充MongoDB.我的MongoDB中当前没有数据库或集合,我想使用更新函数创建这些数据库或集合,该函数创建从csv文件解析的对象.
我正在使用ya-csv来解析我的csv文件和节点的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");
}
Run Code Online (Sandbox Code Playgroud)
我没有为此创建数据库或集合,但它可以通过此更新为我执行此操作吗?我收到一个错误:
[Error: Connection was destroyed by application]
Run Code Online (Sandbox Code Playgroud)
当我运行它时,数据库会被创建,但它们是空的.任何帮助将不胜感激.
除非特别需要使用NodeJS,否则不仅要重新排序,而且要对从CSV文件读取的字段进行一些复杂的修改,请使用mongoimport.
如果你需要做的就是跳过并重新排序某些字段 - 使用简单的awk工作字段,根据需要跳过和更改顺序:
cat /tmp/csv | awk -F',' 'BEGIN{OFS=","} {print $1,$2,$4,$3,$10}' | mongoimport --type csv --db test --collection csv_import
此外,如果需要根据csv值更改集合或数据库名称(此示例中的字段10用作数据库名称,字段11用作集合):
cat /tmp/csv | awk -F',' 'BEGIN{OFS=","} {print $1,$2,$4,$3,$10 | "mongoimport --type csv --db "$10" --collection "$11 }'
或者您可以先将文件拆分为每个db/collection块.
| 归档时间: |
|
| 查看次数: |
7248 次 |
| 最近记录: |