【问题标题】:how to import a csv file to mysql using node.js?如何使用 node.js 将 csv 文件导入 mysql?
【发布时间】:2014-12-25 15:25:10
【问题描述】:

现在我正在尝试使用库 fast-csv 这样做:

var stream = fs.createReadStream("./google.csv");
  csv
   .fromStream(stream, {headers : ["Name","E-mail 1 - Value"], ignoreEmpty: true})
   .on("data", function(data){
       console.log(data);
   })
   .on("end", function(){
       console.log("done");
   });

但它会抛出此错误:“预期的列标题不匹配:2 列得到:57”

你知道我怎样才能避免这种情况吗?我应该使用不同的库/方法

我面临的另一个问题是我得到了十六进制的结果......我怎样才能正确解析它?

【问题讨论】:

  • 从第二个参数中移除 headers 属性。该 CSV 显然有 57 列,而您只提供了其中两列的标题。

标签: mysql node.js csv import contacts


【解决方案1】:

您可以使用节点模块“csv-parse”。

  1. 使用节点'fs'模块读取csv文件
  2. 将数据传递给 csv 解析器,您将得到一个数组,其中内部数组表示每一行。

看看下面的代码。

var csvParser = require('csv-parse');

fs.readFile(filePath, {
  encoding: 'utf-8'
}, function(err, csvData) {
  if (err) {
    console.log(err);
  }

  csvParser(csvData, {
    delimiter: ','
  }, function(err, data) {
    if (err) {
      console.log(err);
    } else {
      console.log(data);
    }
  });
});

这里的 filePath 是 csv 文件的路径,分隔符将根据您的文件。它是分隔 csv 文件中字段的字符(可以是 ','、'.' 等)。

【讨论】:

  • 嗨,Techxxx,这种方法效果更好,但现在我面临这个问题:一切都是十六进制,你会如何处理?
  • @Cedric 抱歉,我不明白你的问题。如果你解释清楚,那么我可以尽力帮助你。
猜你喜欢
  • 2020-04-13
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2012-06-20
相关资源
最近更新 更多