2017-08-28 51 views
1

我試圖解析一個使用製表符作爲列分隔符的CSV文件。我收到以下錯誤:錯誤:第5行的列數不一致 - 解析CSV時

Error: Number of columns is inconsistent on line 5 
at Parser.__push (/Users/mesamhaider/Desktop/workspace/Order_CSV_Parsing_Tool/node_modules/csv-parse/lib/index.js:248:14) 
at Parser.__write (/Users/mesamhaider/Desktop/workspace/Order_CSV_Parsing_Tool/node_modules/csv-parse/lib/index.js:469:20) 
at Parser._transform (/Users/mesamhaider/Desktop/workspace/Order_CSV_Parsing_Tool/node_modules/csv-parse/lib/index.js:182:14) 
at Parser.Transform._read (_stream_transform.js:190:10) 
at Parser.Transform._write (_stream_transform.js:178:12) 
at doWrite (_stream_writable.js:371:12) 
at writeOrBuffer (_stream_writable.js:357:5) 
at Parser.Writable.write (_stream_writable.js:274:11) 
at ReadStream.ondata (_stream_readable.js:626:20) 
at emitOne (events.js:115:13) 

的代碼,我使用如下所示:

const fs = require('fs'); 
const parse = require('csv-parse'); 

fs.createReadStream('../in/*.csv') 
    .pipe(parse({delimiter : ' '})) 
    .on('data', function(row){ 
     console.log(row) 
    }) 

的代碼會比它登錄到控制檯,但如的目的得多了,我把就這樣。另外 - 一旦我解析這將有可能輸入SQL插入語句內的每個列?

+0

是您的CSV文件有效,每行中的列數一致? – koolkat

+0

@ koolkat - 是的,我認爲它是。但是,有些列不包含某些行的值。這可能會導致這個問題? – mesmama

+0

這不應該引起問題,因爲空值被解釋爲空字符串''''。嘗試使用在線的'CSV linter'驗證您的'CSV'。 – koolkat

回答

0

以下是您的示例代碼。請爲此代碼安裝should節點模塊以運行。

  • 創建解析器與parser()功能
  • 裏面寫有write()功能
  • on.finish()檢索數據。

    const fs = require('fs'); 
    const parse = require('csv-parse'); 
    require("should"); 
    
    var myReadStream = fs.createReadStream('../in/*.csv'); 
    
    var parser = parse({delimiter: ':'}); 
    
    parser.write(myReadStream); 
    
    parser.on('error', function(err){ 
        console.log(err.message); 
    }); 
    
    parser.on('finish', function(){ 
        output.should.eql([Bunch of arrays here from the file]); 
    }); 
    

在這裏看到更多information.

相關問題