Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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
Javascript 逐行读取文件,解析它们并将它们插入节点js的mongo中_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 逐行读取文件,解析它们并将它们插入节点js的mongo中

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

我有一个分开的文件。它有成千上万的数据。如何使用nodeJs逐行读取文件、解析它们、创建对象并将它们插入mongo数据库中

我只是在学习node和mongo。我来自不同的背景。那么如何做到这一点呢

最后,必须使用适当的数据填充Mongo DB。 我在网上搜索,但找不到完整的答案


谢谢。

我遇到了类似的问题。这种方法对我有效。 看一看,可能会有帮助

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'))
瓦尔科勒