2013-10-25 22 views
7

Belirli bir sayıda kaydı bir CSV dosyasından ayrıştırabilen bir Düğüm modülü var mı? Kullanım durumu, büyük bir günlük dosyasını ayrıştırmak ve istendiği gibi bir çağrı istemcisine kayıt sağlamaktır.Node.js ile talep üzerine kayıtları nasıl ayrıştırırım?

node-csvyet bunu yapamaz, ben buldum en yakın CSV ayrıştırma tekerleği yeniden gerektirir ve çok hatlı kayıtlarına kıracak olan read lines one by one etmektir.

Ancak çubuğu indirelim: Tek satırlı CSV kayıtlarını Node.js ile tek tek nasıl ayrıştırabilirim? Diğer birçok dilde oldukça önemsiz bir görev.

+0

tek bir :) – SheetJS

+0

siz "tek hat CSV kayıtları" ile neyi kastediyoruz yazmayı düşünmelisiniz? Çünkü açıkçası sadece 1 satır değil, cevabım düştü. – Slavo

+0

@Slavo: cevabınızı kandıran bir fikir yok (ben değildim). "Tek satırlı CSV kayıtları" ile, alanların hiçbirinde yeni satırlar olmadan virgülle ayrılmış tupler kastediyorum. Normal CSV verisi türünde olduğu gibi. –

cevap

0

(aynı zamanda yeni satır katıştırılmış olabilir) tek bir 'çizgi' Ayrıştırma: Sana 'belirli bir CSV dosyasından kayıtların sayısı', ya da ne ile ne demek emin değilim

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

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

Sorun tam olarak. İhtiyacınız olan miktarı okuduktan sonra, yanıtı müşteriye geri göndermeniz yeterlidir.

DÜZENLEME: Eğer disk belleği uygulamak istiyorsanız, siz de node-csv kullanabilirsiniz:

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

Örnek kodu ayrıştırma konusunda sorun yaşıyorum. "SINGLE_LINE_OF_CSV" nasıl okunur, yeni satırlar gömülüdür? Ve csv işlevi nasıl tanımlanır? "Belirli kayıt sayısı" ile, tüm dosyayı bellekte ayrıştırmak ve ardından istenen kayıtları seçmek yerine, bir CSV dosyasından N kayıtlarını eşzamanlı olarak okumak istiyorum. –

+0

@DanDascalescu üzgünüm, çubuğu indirdiyseniz :) Örnek kod, tek satırlı CSV kayıtlarını ayrıştırır (ve 'tek tek' yönü elde etmek için bunu birden çok kez çağırabilirsiniz). Nereden gelmelerinden bahsetmedin. Ve csv 'node-csv'dir. Belki de herkesin niyetini uygulamakta başarısız olduğu gibi ... ... soruyu daha açık bir şekilde yapmalısın. – robertklep

1

Bildiğim kadarıyla anladığım kadarıyla, sadece bir diziye değerlerin virgülle ayrılmış hattı ayrıştırmak istiyor? Eğer öyleyse, denemek bu bir:

https://npmjs.org/package/csvrow

İlgili konular