2013-10-25 28 views
7

Có mô-đun Nút có thể phân tích một số lượng bản ghi cụ thể từ tệp CSV không? Trường hợp sử dụng là phân tích cú pháp tệp nhật ký lớn và cung cấp bản ghi cho ứng dụng khách phân trang theo yêu cầu.Làm cách nào để phân tích các bản ghi theo yêu cầu với Node.js?

node-csv không thể yet thực hiện việc này và gần nhất tôi tìm thấy là read lines one by one, yêu cầu phát minh lại bánh xe phân tích cú pháp CSV và sẽ phá vỡ các bản ghi nhiều dòng.

Nhưng hãy hạ thấp thanh: làm cách nào tôi có thể phân tích từng bản ghi CSV một dòng với Node.js? Nhiệm vụ khá tầm thường trong hầu hết các ngôn ngữ khác.

+0

Bạn nên cân nhắc viết một :) – SheetJS

+0

Ý anh là gì bởi "hồ sơ đơn dòng CSV"? Bởi vì rõ ràng nó không chỉ là 1 dòng, như trả lời của tôi đã downvoted. – Slavo

+0

@ Slavo: không có ý kiến ​​ai downvoted câu trả lời của bạn (không phải tôi). Bởi "bản ghi CSV một dòng", tôi có nghĩa là các tuples được phân cách bằng dấu phẩy không có dòng mới trong bất kỳ trường nào. Như trong, loại dữ liệu CSV thông thường. –

Trả lời

0

Phân tích một 'dòng' duy nhất (mà cũng có thể đã nhúng newlines):

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

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

Tôi không chắc chắn những gì bạn có ý nghĩa bởi 'một số cụ thể của các hồ sơ từ một tập tin CSV', hoặc những gì vấn đề là chính xác. Khi bạn đã đọc số tiền bạn cần, chỉ cần gửi phản hồi lại cho khách hàng và bạn đã hoàn tất.

EDIT: nếu bạn muốn thực hiện phân trang, bạn có thể sử dụng node-csv quá:

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

Tôi dường như gặp sự cố khi phân tích mã mẫu. Làm cách nào để đọc "SINGLE_LINE_OF_CSV", sao cho nó có dòng mới được nhúng? Và chức năng 'csv' được định nghĩa như thế nào? Bởi "số lượng hồ sơ cụ thể", tôi có nghĩa là đọc đồng bộ N hồ sơ từ một tệp CSV, thay vì phân tích cú pháp toàn bộ tệp trong bộ nhớ và sau đó chọn các bản ghi mong muốn. –

+0

@DanDascalescu xin lỗi, bạn đã hạ thanh :) Mã ví dụ phân tích các bản ghi CSV một dòng (và bạn có thể gọi nó nhiều lần để đạt được khía cạnh 'từng người một'). Bạn đã không đề cập đến nơi họ nên đến từ. Và 'csv' là' node-csv'. Có lẽ bạn chỉ nên làm cho câu hỏi của bạn rõ ràng hơn khi mọi người dường như không thực hiện ý định của bạn ... – robertklep

1

Theo như tôi hiểu, bạn chỉ muốn phân tích dòng bằng dấu phẩy của các giá trị vào một mảng? Nếu vậy, hãy thử điều này:

https://npmjs.org/package/csvrow

Các vấn đề liên quan