2017-01-05 3 views
0

HTMLページとしてフォーマットされた、たくさんのデータがあるWebページを削っています。フォームを送信してテーブルを生成する必要があります。私のノードスクリプトは、フォームのすべての順列を送信し、結果の表をスクラップして各行を1行のデータに変換します。Node.js:ファイルが大きすぎると、ファイルへの書き込みが中断されます。

問題は、ファイルにデータを書き込むと、ファイルのサイズが約10MBになると動作しなくなるという問題です。時にはそれは少し少ない。時にはもう少し。私は.csv、.json、および.txtとしてファイルを書き込もうとしましたが、同じ問題が発生するたびに。

私はfsを使用してこのタスクを実行しています。 console.log(line_of_data)私ができる

var fs = require("fs"); 
var stream = fs.createWriteStream("data.csv"); // can also be .json or .txt 

stream.write(line_of_data); 

とこすりするために残されたデータがありませんまで、それはすべての方法を通じて、正常に動作します:関連するコードです。しかし、約10MBの場合、出力ファイルはそれ以上のデータ行を受け付けません。停止地点はほぼ完全に恣意的に見えます。私がスクリプトを実行するたびに、別の地点での書き込みが中止されます。私は自分のハードドライブ上に記憶スペースをたくさん持っているので、問題は何か他のものと関係しているに違いありません。

+0

結果の異なるテーブルを別のファイルに保存し、最後にnodeJS以外のものとマージできますか? – atayenel

+0

この回答を見るhttp://stackoverflow.com/questions/9486683/writing-large-files-with-node-js –

答えて

0

MongoDBを使用してデータを保存しました。 MongoDBをノードモジュールとしてインストールするには、npm install mongodb --saveを実行してください。関連のjavascriptは次のとおりです。

MongoClient = require("mongodb").MongoClient; 
MongoClient.connect("mongodb://localhost:27017/database", function(err, db) { 

    if (!err) { 

    // set up mongodb collection 
    db.createCollection("collection", function(err, collection) {}); 
    var collection = db.collection("collection"); 

    // after scraping data... 
    // insert a data object (line_of_code) 
    collection.insert(line_of_data, {w: 1}, function(err, result) { 
     if (err) console.log(err); 
    }); 

    } 

}); 

データを変換するためにいくつかのコマンド:

  1. CSVとしてエクスポート:mongoexport --db database --collection collection --out data.csv --type=csv --fields 'field1, field2, field3, etc.'
  2. JSONに変換:csvtojson data.csv > data.jsoncsvtojsonが必要です)
  3. 検証JSON:jsonlint data.json(必要がありますjsonlint
関連する問題