2014-03-31 71 views
0

我有一個非常大的文件,其中包含大量的JSON字符串(超過100K),每行都有一個字符串。讀取大文件並逐行插入Node.JS中的數據庫中

我想讀取每一行,將其插入到數據庫中,並且在插入項目後,我想用初始插入的基本信息更新另一個數據庫中的另一個文檔。而且由於我是一個nodejs newb,所以我在解決我所做的錯誤時遇到了麻煩。這是我到目前爲止。

var lineReader - require("line-reader"); 

lineReader.eachLine(filePath, function(line, last){ 
    if(count == 1){ 
     asyncAdd(JSON.parse(line)); 
    } 
})} 

var counter = 0; 

function asyncAdd(jsonString){ 

async.waterfall([ 
     //this function calls the inserter 
    function(callback){ 
     counter++; 

     addJson(jsonString, function(doc){ 
      callback(null, doc); 
      console.log("Added " + counter); 
     }) 

    }, 
    //This function calls the indexing function 
    function(doc, callback){ 

     console.log("indexing: " + counter); 

     updateDBIndex(doc, function(err, savedDocument){ 
      callback(err, savedDocument); 
     }); 
    } 
    ], 

    function(err, results){ 
     if(err){ 
      return console.error("Error " + err); 
     } 
     console.log("indexed " + counter); 
    }); 
    } 

基本上,如果我的文件看起來像:

{"_id": "1", "item":"glove", "color": "red"}\n 
{"_id": "4", "item":"hat", "color" : "red"}\n 
{"_id": "6", "item":"hat","color" : "blue"}\n 

我希望輸出的樣子, 加1個 索引1 索引1 加2 索引2 索引2 添加3 索引3 索引3

任何幫助w不勝感激!謝謝!

+0

你是什麼意思「數據庫索引」?上面的代碼段輸出了什麼? – Gntem

+0

數據庫索引是我用來跟蹤我插入的所有內容的東西。所以在我的小文件中,我在索引之上會有{「hat」:「2」「glove」:「1」「red」:「2」「blue」:「1」。 –

+0

您是否正在爲此編寫自己的數據庫,或者是我們誤解數據庫軟件的工作原理之一? –

回答

0

你可以嘗試下面的代碼片段

var lineReader = require("line-reader"); 
var lineNumber = 0; 
lineReader.eachLine(filePath, function (line, last) { 
    asyncAdd(JSON.parse(line), lineNumber); // current line number 
    lineNumber++; // increment for next one 
}); 
function asyncAdd(jsonString, lineNum/*additional parameter*/) { 
    async.waterfall([ 
     //this function calls the inserter 
     function (callback) { 
     addJson(jsonString, function (doc) { 
      callback(null, doc); 
      console.log("Added " + lineNum); 
     }) 
     }, 
     //This function calls the indexing function 
     function (doc, callback) { 
     console.log("indexing: " + lineNum); 
     updateDBIndex(doc, function (err, savedDocument) { 
      callback(err, savedDocument); 
     }); 
     } 
    ], 
    function (err, results) { 
    if (err) { 
     return console.error("Error " + err); 
    } 
    console.log("indexed " + lineNum); 
    }); 
} 

希望工程,原來是一種不完整的。

+0

謝謝你的迴應,我只是不'沒有辦法逐行閱讀線條。我想暫停閱讀這些行,直到完成更新數據庫。 –

相關問題