2013-10-25 6 views
7

CSVファイルから特定数のレコードを解析できるノードモジュールはありますか?この使用例では、大きなログファイルを解析し、要求に応じてページングクライアントにレコードを配信します。Node.jsでオンデマンドでレコードを解析するにはどうすればよいですか?

node-csv can not yetこれを行うと、私が見つけたのはread lines one by oneです。これは、CSV解析ホイールを再作成する必要があり、複数行のレコードが破損します。

しかし、バーを下げてみましょう:Node.jsで1行のCSVレコードを1つずつ解析するにはどうすればよいですか?他のほとんどの言語ではかなり簡単です。

+0

あなたは1を書くことを検討してください:) – SheetJS

+0

あなたは「シングルラインCSVレコード」とはどういう意味ですか?私の返信が下落したので、明らかに1行だけではないからです。 – Slavo

+0

@Slavo:誰があなたの答えを落としたのか分かりません(私ではありませんでした)。 「1行のCSVレコード」とは、どのフィールドにも改行がないコンマ区切りのタプルを意味します。 CSVデータと同様に、通常のタイプのCSVデータです。 –

答えて

0

(も改行が埋め込まれていることができます)単一の「行」を解析:

var csv = require('csv'); // node-csv 

csv() 
    .from.string(SINGLE_LINE_OF_CSV) 
    .to.array(function(record) { 
    console.log('R', record); 
    }); 

私はあなたが「CSVファイルからのレコードの特定の数」で何を意味するかわからない、または何問題は正確です。必要な金額を読み終えたら、クライアントに返信を送り返すだけです。

EDIT:あなたはページングを実装する場合、あなたはあまりにもnode-csvを使用することができます。

var csv = require('csv'); 
var skip = 100; 
var limit = 10; 

csv() 
    .from.path('file.csv') 
    .on('record', function(row, index) { 
    if (index >= skip && index < (skip + limit)) 
     console.log('R', index); 
    }); 
+0

サンプルコードの解析に問題があるようです。 "SINGLE_LINE_OF_CSV"は改行が埋め込まれているので、どのように読み込まれますか?そして 'csv'関数はどのように定義されていますか? "特定のレコード数"とは、メモリ内のファイル全体を解析してから、目的のレコードを選択するのではなく、CSVファイルから同期してN個のレコードを読み取ることです。 –

+0

@DanDascalescu申し訳ありませんが、バーを下げました:)このサンプルコードでは、単一行のCSVレコードを解析しています(これを複数回呼び出して「1つずつ」のアスペクトを実現できます)。あなたはどこから来るべきかは言及していませんでした。そして 'csv'は' node-csv'です。おそらくあなたは皆があなたの意図を実現するのに失敗しているように、あなたの質問をより明確にするべきです... – robertklep

1

私の知る限り理解して、あなただけの配列に値をカンマで区切った行を解析したいですか?もしそうなら、これは試してみてください。

https://npmjs.org/package/csvrow

関連する問題