2017-01-21 18 views
6

Tôi đang cố đọc tệp csv bằng nút js. cô là mã của tôiCách đọc tệp csv trong nút js

fs.readFile(config.csvUploadPath, function read(err, data) { 
    if (err) { 
     throw err; 
    } 
    console.log(data + 'my data') 
}); 

CONSOLE:

ID 
D11 
D33 
D55 

Ở đây tôi muốn để có được các yếu tố trong cột ID và lưu trữ những người trong một mảng. Làm thế nào tôi có thể làm điều đó? Bất cứ ai có thể đề nghị tôi giúp đỡ. Cảm ơn. Bộ điều khiển của tôi:

var partnersModel = new partners(params); 
     fs.readFile(config.csvUploadPath, function read(err, data) { 
      if (err) { 
       throw err; 
      } 
     dataArray = data.toString().split(/\r?\n/); 
      dataArray.forEach(function(v,i){ 
       if(v !== 'DUI'){ 
        partnersModel.dui.push(v); 
       } 
      }); 
     }); 
     partnersModel.save(function(error, response){ 
+1

http://stackoverflow.com/questions/23080413/nodejs-reading-csv-file –

+0

Bản sao có thể có của [NodeJs reading csv file] (http://stackoverflow.com/questions/23080413/nodejs-reading-csv -file) – crowchirp

+0

Đây có phải là tệp CSV hay chỉ một tệp có chứa danh sách ID không? Điều này sẽ khá dễ dàng để phân tích cú pháp mà không cần thư viện, nhưng nếu bạn phân tích cú pháp CSV thực sự, hãy chắc chắn sử dụng một thư viện! Mô-đun lựa chọn của tôi là: https://www.npmjs.com/package/csv –

Trả lời

9

Sử dụng thư viện, CSV có rất nhiều điều thú vị. Tôi đã đến để tận hưởng gói csv. Nó nằm ở đây: https://www.npmjs.com/package/csv. Dưới đây là một ví dụ rất nhanh bằng cách sử dụng api không đồng bộ.

const fs = require('fs') 
var parse = require('csv-parse') 
fs.readFile(inputPath, function (err, fileData) { 
    parse(fileData, {columns: false, trim: true}, function(err, rows) { 
    // Your CSV data is in an array of arrys passed to this callback as rows. 
    }) 
}) 

Vì tệp của bạn không có nhiều giá trị mỗi hàng và không chứa dấu phân tách bên cạnh dòng mới, nó chỉ là CSV nhỏ. Có lẽ String.prototype.split() là dành cho bạn?

const fs = require('fs') 
fs.readFile(inputPath, 'utf8', function (err, data) { 
    var dataArray = data.split(/\r?\n/); //Be careful if you are in a \r\n world... 
    // Your array contains ['ID', 'D11', ... ] 
}) 
+0

Cảm ơn, từ mã của bạn, tôi sẽ nhận được gì? – MMR

+0

hàng = ['11', '33, '34'] ....? – MMR

+0

Tệp CSV thường có nhiều giá trị mỗi hàng, do đó, nó trả về một mảng các mảng ... một cho mỗi hàng. Đối với ví dụ của bạn 'rows = [['' id '], [' D11 '], [' D33 '], [' D55 ']]'. Lưu ý rằng tiêu đề đã được phân tích cú pháp quá, và điều đó để lập chỉ mục một trong các giá trị bạn sẽ cần sử dụng một cái gì đó như 'hàng [1] [0]'. –

0

Từ How to read data From *.CSV file using javascript?, sử dụng thư viện jQuery-CSV.

Lưu ý: Thư viện được thiết kế để xử lý mọi dữ liệu CSV tuân thủ RFC 4180, bao gồm tất cả các trường hợp khó chịu mà hầu hết các giải pháp 'đơn giản' đều bỏ qua.

var fs = require('fs'); 
var $ = jQuery = require('jquery'); 
$.csv = require('jquery-csv'); 

var sample = './path/to/data/sample.csv'; 
fs.readFile(sample, 'UTF-8', function(err, csv) { 
    $.csv.toArrays(csv, {}, function(err, data) { 
    for(var i=0, len=data.length; i<len; i++) { 
     console.log(data[i]); //Will print every csv line as a newline 
    } 
    }); 
}); 

đoạn mã từ các ví dụ jquery-csv 's here.

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