couchdb – 导入json文件
我有一个json格式的数据文件。 数据很奇怪,因为这些行具有一组属性的不同子集,这些属性并不都是事先已知的(随着时间的推移它们将会累积起来)。 例如:
[{"firstName":"Joe","education":"highschool","sex":"male"}, {"lastName":"Edwards","address":"ohio","sex":"male"}, {"favoriteSport":"cycling","bicycle":"raleigh","ownsBoat":"yes","ownsDog":"yes","ownsHouse":"yes"}]
大量的数据已经存在于一个文件中,所以我想将它导入到couchdb中,而不是逐个input数据项。 我遵循这里的一个post的程序,但是,一个数据库创build时,它是空的。 我用了:
curl -X PUT -d @../Data/data.json http://127.0.0.1:5984/test_import
更新:因为我正在与nodejs(新手),我想我会尝试使用'摇篮'。 我的想法是将数据导入为数组,并使用'cradle's dbsave()'进行批量加载。 但使用以下内容:
var fs = require('fs'); var cradle = require('cradle'); var data = fs.readFile( '../Data/data.json', function (err, data) { if (err) { throw err; } . . . makeDB(bigdata,'test_import'); // where 'bigdata' is an array of json objects/couchdb 'documents' }); function makeDB (p,filename) { var db = new(cradle.Connection)().database(filename); console.log(db); db.save(p, function(err,res) { if (err) { console.log(err); } else { console.log('Success!'); } }); };
后者似乎工作! 数据库被创build并被填充,但是却会抛出以下错误:
k:\nodejs\node_modules\cradle\lib\cradle.js:198 return callback(body); ^ TypeError: undefined is not a function OR k:\nodejs\node_modules\cradle\lib\cradle.js:201 callback(null, self.options.raw ? body : new cradle.Response(body, res ^ TypeError: undefined is not a function at Request.cradle.Connection.request [as _callback] (k:\nodejs\node_modules\cradle\lib\cradle. js:201:9) at Request.init.self.callback (k:\nodejs\node_modules\request\main.js:120:22) at Request.EventEmitter.emit (events.js:91:17) at Request.<anonymous> (k:\nodejs\node_modules\request\main.js:633:16) at Request.EventEmitter.emit (events.js:88:17) at IncomingMessage.Request.start.self.req.self.httpModule.request.buffer (k:\nodejs\node_modul es\request\main.js:595:14) at IncomingMessage.EventEmitter.emit (events.js:115:20) at IncomingMessage._emitEnd (http.js:366:10) at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23) at Socket.socketOnData [as ondata] (http.js:1366:20)
[解决了]
我的问题的答案是肯定的,当然,couchdb是完全适合这种数据。 我发现用node.js进行批量导入最简单的方法是使用cradle (其创build者提供了解决问题的方法)。 前面的代码对makeDB函数进行了以下更改,因此无错误:
// Take the array of objects and create a couchdb database function makeDB (data,filename) { var db = new(cradle.Connection)().database(filename); //console.log(db); db.create(function(err){ if (err) console.log(err); }); db.save(data, function(err) { if (err) console.log(err); console.log(filename + ' is created.'); }); };
- 如何使用node.js将csv文件导入到mysql?
- 当你在Javascript中“从someModule导入someModuleName”会发生什么?
- 在多个文件/模块中使用相同的模块
- 我怎样才能得到TypeScript加载PDF.js NPM模块和@types绑定生成工作Node.JS代码的方式?
- 通过Webpack在模块中导入图像
- TypeScript:我可以导入一个文件夹而不必写一个index.ts文件吗?
- nodejs 8导入模块 – 需要还是导入?
- 如何导入一个Typescript 1.0函数,如node.js require和arguments?
- 为什么Visual Studio代码添加导致我的nodejs程序中断的import语句?