MongoDB脚本和CSV文件:我可以使用require.js加载jquery.csv吗?

时间:2013-11-22 23:15:11

标签: javascript jquery mongodb csv requirejs

我正在编写需要加载CSV文件的脚本,对其进行一些处理然后将其保存到MongoDB中。加载CSV文件的最佳方法是什么?

现在我的存根代码如下所示:

var fs = require("fs");
var $ = jQuery = require("jquery");
require("./jquery.csv.js");

var sample = "../data/ucl-ramsay-20131014.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++) {
      print(data[i]);
    }
  });
});

然而,这失败了,因为默认情况下MongoDB似乎没有附带require。我应该以另一种方式加载CSV文件,还是应该首先加载require.js?

1 个答案:

答案 0 :(得分:5)

您无法在MongoDB控制台中轻松完成所有脚本编写,我建议您不要尝试。相反,我建议您为您的平台安装NodeJS的副本,然后使用您想要的任何csv解析器,您可以轻松地遍历行并将文档插入MongoDB数据库。

在文件csv_import.js中添加如下代码(添加代码以解析CSV文件):

  var MongoClient = require('mongodb').MongoClient;
  var async = require('async');

  var csv = []; // build the csv into an array...
  // putting the data into the 'test' database:
  MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
    if(err) throw err;

    var collection = db.collection('csv_import');
    async.every(csv, function(row, callback) {
       // build the csv row into an object literal
       var data = { "name" : .... }; // make this fit your data correctly
       collection.insert(data, function(err, docs) {
          // signal that this row is done inserting
          // by calling the callback passed with every row
          callback(err);
       });
    }, function() {
        // all rows have been inserted, so close the db connection
        db.close();
    });
  })

然后,只是

node csv_import.js