Javascript 逐行读取文件,解析它们并将它们插入节点js的mongo中
我有一个分开的文件。它有成千上万的数据。如何使用nodeJs逐行读取文件、解析它们、创建对象并将它们插入mongo数据库中 我只是在学习node和mongo。我来自不同的背景。那么如何做到这一点呢 最后,必须使用适当的数据填充Mongo DB。 我在网上搜索,但找不到完整的答案Javascript 逐行读取文件,解析它们并将它们插入节点js的mongo中,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我有一个分开的文件。它有成千上万的数据。如何使用nodeJs逐行读取文件、解析它们、创建对象并将它们插入mongo数据库中 我只是在学习node和mongo。我来自不同的背景。那么如何做到这一点呢 最后,必须使用适当的数据填充Mongo DB。 我在网上搜索,但找不到完整的答案 谢谢。我遇到了类似的问题。这种方法对我有效。 看一看,可能会有帮助 var mongoDb = require('mongodb'); var mongoClient = mongoDb.Mong
谢谢。我遇到了类似的问题。这种方法对我有效。 看一看,可能会有帮助
var mongoDb = require('mongodb');
var mongoClient = mongoDb.MongoClient;
var dbname = 'YOUR_DB_NAME';
var collectionName = 'YOUR_COLLECTION_NAME';
var url = 'mongodb://localhost:27017/'+dbname;
var filename = 'FIle_Name.txt';
console.log('***************Process started');
mongoClient.connect(url,function(err,db){
if(err){
console.log('error on connection '+err);
}
else{
console.log('***************Successfully connected to mongodb');
var collection = db.collection(collectionName);
var fs = require('fs');
var readline = require('readline');
var stream = require('stream');
var instream = fs.createReadStream(filename);
var outstream = new stream;
var rl = readline.createInterface(instream,outstream);
console.log('***************Parsing, please wait ...');
rl.on('line',function(line){
try{
var arr = line.split('\t');
var object = {};
//Parse them here
//Example
object['name'] = arr[0]; //Just an example
var res = collection.insert(object);
}
catch (err){
console.log(err);
}
});
rl.on('close',function(){
db.close();
console.log('***************completed');
});
}
});
我也是一个学习者。如果有人能把它做得更好,那就好了。我也遇到过类似的问题。这种方法对我有效。 看一看,可能会有帮助
var mongoDb = require('mongodb');
var mongoClient = mongoDb.MongoClient;
var dbname = 'YOUR_DB_NAME';
var collectionName = 'YOUR_COLLECTION_NAME';
var url = 'mongodb://localhost:27017/'+dbname;
var filename = 'FIle_Name.txt';
console.log('***************Process started');
mongoClient.connect(url,function(err,db){
if(err){
console.log('error on connection '+err);
}
else{
console.log('***************Successfully connected to mongodb');
var collection = db.collection(collectionName);
var fs = require('fs');
var readline = require('readline');
var stream = require('stream');
var instream = fs.createReadStream(filename);
var outstream = new stream;
var rl = readline.createInterface(instream,outstream);
console.log('***************Parsing, please wait ...');
rl.on('line',function(line){
try{
var arr = line.split('\t');
var object = {};
//Parse them here
//Example
object['name'] = arr[0]; //Just an example
var res = collection.insert(object);
}
catch (err){
console.log(err);
}
});
rl.on('close',function(){
db.close();
console.log('***************completed');
});
}
});
我也是一个学习者。如果有人能把它做得更好,那就好了。我也遇到过类似的问题。这种方法对我有效。 看一看,可能会有帮助
var mongoDb = require('mongodb');
var mongoClient = mongoDb.MongoClient;
var dbname = 'YOUR_DB_NAME';
var collectionName = 'YOUR_COLLECTION_NAME';
var url = 'mongodb://localhost:27017/'+dbname;
var filename = 'FIle_Name.txt';
console.log('***************Process started');
mongoClient.connect(url,function(err,db){
if(err){
console.log('error on connection '+err);
}
else{
console.log('***************Successfully connected to mongodb');
var collection = db.collection(collectionName);
var fs = require('fs');
var readline = require('readline');
var stream = require('stream');
var instream = fs.createReadStream(filename);
var outstream = new stream;
var rl = readline.createInterface(instream,outstream);
console.log('***************Parsing, please wait ...');
rl.on('line',function(line){
try{
var arr = line.split('\t');
var object = {};
//Parse them here
//Example
object['name'] = arr[0]; //Just an example
var res = collection.insert(object);
}
catch (err){
console.log(err);
}
});
rl.on('close',function(){
db.close();
console.log('***************completed');
});
}
});
我也是一个学习者。如果有人能把它做得更好,那就好了。我也遇到过类似的问题。这种方法对我有效。 看一看,可能会有帮助
var mongoDb = require('mongodb');
var mongoClient = mongoDb.MongoClient;
var dbname = 'YOUR_DB_NAME';
var collectionName = 'YOUR_COLLECTION_NAME';
var url = 'mongodb://localhost:27017/'+dbname;
var filename = 'FIle_Name.txt';
console.log('***************Process started');
mongoClient.connect(url,function(err,db){
if(err){
console.log('error on connection '+err);
}
else{
console.log('***************Successfully connected to mongodb');
var collection = db.collection(collectionName);
var fs = require('fs');
var readline = require('readline');
var stream = require('stream');
var instream = fs.createReadStream(filename);
var outstream = new stream;
var rl = readline.createInterface(instream,outstream);
console.log('***************Parsing, please wait ...');
rl.on('line',function(line){
try{
var arr = line.split('\t');
var object = {};
//Parse them here
//Example
object['name'] = arr[0]; //Just an example
var res = collection.insert(object);
}
catch (err){
console.log(err);
}
});
rl.on('close',function(){
db.close();
console.log('***************completed');
});
}
});
我也是一个学习者。如果有人能把它做得更好,那就好了。我对它有意见。我的问题是,在readline完成之前,数据库不会被填充。行是同步读取的,但DB插入是异步的
相反,我用这个包找到了一个更简单的解决方案。它读取行并等待回调,然后继续
var MongoClient = require('mongodb').MongoClient
var dbName = 'yourDbName'
var url = 'mongodb://localhost:27017/' + dbName
var collectionName = 'yourCollectionName'
var filename = 'yourFileName.txt'
var printLine = 1000
MongoClient.connect(url, function(err, db) {
if (err) {
console.error('Problem connecting to database')
} else {
console.log('Connected correctly to server.')
var lineReader = require('line-reader')
var collection = db.collection(collectionName)
var lineNum = -1
var headers = []
lineReader.eachLine(filename, function(line, last, cb) {
lineNum++
try {
var split = line.split('\t')
var object = {}
if (lineNum > 0) {
for (var i = 0; i < split.length; i += 1) {
object[headers[i]] = split[i]
}
collection.insert(object, function (insertErr, insertObj) {
if (insertErr) console.error(insertErr)
if (lineNum % printLine === 0) console.log('Line ' + lineNum)
if (last) {
console.log('Done with ' + filename + ' (' + lineNum + ' records)')
process.exit(0)
} else {
cb()
}
})
} else {
headers = line.split('\t')
cb()
}
} catch (lineError) {
console.error(lineError)
}
})
}
})
var MongoClient=require('mongodb')。MongoClient
var dbName='yourDbName'
var url='1〕mongodb://localhost:27017/'+dbName
var collectionName='yourCollectionName'
var filename='yourFileName.txt'
var printLine=1000
连接(url,函数(err,db){
如果(错误){
console.error('连接到数据库时出现问题')
}否则{
console.log('已正确连接到服务器')
var lineReader=require('line-reader'))
var collection=db.collection(collectionName)
var lineNum=-1
变量头=[]
lineReader.eachLine(文件名、函数(行、最后一行、cb){
lineNum++
试一试{
var split=line.split('\t')
变量对象={}
如果(lineNum>0){
对于(变量i=0;i
我的电脑有问题。我的问题是,在readline完成之前,数据库不会被填充。行是同步读取的,但DB插入是异步的
相反,我用这个包找到了一个更简单的解决方案。它读取行并等待回调,然后继续
var MongoClient = require('mongodb').MongoClient
var dbName = 'yourDbName'
var url = 'mongodb://localhost:27017/' + dbName
var collectionName = 'yourCollectionName'
var filename = 'yourFileName.txt'
var printLine = 1000
MongoClient.connect(url, function(err, db) {
if (err) {
console.error('Problem connecting to database')
} else {
console.log('Connected correctly to server.')
var lineReader = require('line-reader')
var collection = db.collection(collectionName)
var lineNum = -1
var headers = []
lineReader.eachLine(filename, function(line, last, cb) {
lineNum++
try {
var split = line.split('\t')
var object = {}
if (lineNum > 0) {
for (var i = 0; i < split.length; i += 1) {
object[headers[i]] = split[i]
}
collection.insert(object, function (insertErr, insertObj) {
if (insertErr) console.error(insertErr)
if (lineNum % printLine === 0) console.log('Line ' + lineNum)
if (last) {
console.log('Done with ' + filename + ' (' + lineNum + ' records)')
process.exit(0)
} else {
cb()
}
})
} else {
headers = line.split('\t')
cb()
}
} catch (lineError) {
console.error(lineError)
}
})
}
})
var MongoClient=require('mongodb')。MongoClient
var dbName='yourDbName'
var url='1〕mongodb://localhost:27017/'+dbName
var collectionName='yourCollectionName'
var filename='yourFileName.txt'
var printLine=1000
连接(url,函数(err,db){
如果(错误){
console.error('连接到数据库时出现问题')
}否则{
console.log('已正确连接到服务器')
var lineReader=require('line-reader'))
var collection=db.collection(collectionName)
var lineNum=-1
变量头=[]
lineReader.eachLine(文件名、函数(行、最后一行、cb){
lineNum++
试一试{
var split=line.split('\t')
变量对象={}
如果(lineNum>0){
对于(变量i=0;i
我的电脑有问题。我的问题是,在readline完成之前,数据库不会被填充。行是同步读取的,但DB插入是异步的
相反,我用这个包找到了一个更简单的解决方案。它读取行并等待回调,然后继续
var MongoClient = require('mongodb').MongoClient
var dbName = 'yourDbName'
var url = 'mongodb://localhost:27017/' + dbName
var collectionName = 'yourCollectionName'
var filename = 'yourFileName.txt'
var printLine = 1000
MongoClient.connect(url, function(err, db) {
if (err) {
console.error('Problem connecting to database')
} else {
console.log('Connected correctly to server.')
var lineReader = require('line-reader')
var collection = db.collection(collectionName)
var lineNum = -1
var headers = []
lineReader.eachLine(filename, function(line, last, cb) {
lineNum++
try {
var split = line.split('\t')
var object = {}
if (lineNum > 0) {
for (var i = 0; i < split.length; i += 1) {
object[headers[i]] = split[i]
}
collection.insert(object, function (insertErr, insertObj) {
if (insertErr) console.error(insertErr)
if (lineNum % printLine === 0) console.log('Line ' + lineNum)
if (last) {
console.log('Done with ' + filename + ' (' + lineNum + ' records)')
process.exit(0)
} else {
cb()
}
})
} else {
headers = line.split('\t')
cb()
}
} catch (lineError) {
console.error(lineError)
}
})
}
})
var MongoClient=require('mongodb')。MongoClient
var dbName='yourDbName'
var url='1〕mongodb://localhost:27017/'+dbName
var collectionName='yourCollectionName'
var filename='yourFileName.txt'
var printLine=1000
连接(url,函数(err,db){
如果(错误){
console.error('连接到数据库时出现问题')
}否则{
console.log('已正确连接到服务器')
var lineReader=require('line-reader'))
瓦尔科勒