json文件的Mongoimport

我有一个由约2000个logging组成的json文件。 每个对应于mongo数据库中的文档的logging格式如下:

{jobID:"2597401", account:"XXXXX", user:"YYYYY", pkgT:{"pgi/7.2-5":{libA:["libpgc.so"],flavor:["default"]}}, startEpoch:"1338497979", runTime:"1022", execType:"user:binary", exec:"/share/home/01482/XXXXX/appker/ranger/NPB3.3.1/NPB3.3-MPI/bin/ft.D.64", numNodes:"4", sha1:"5a79879235aa31b6a46e73b43879428e2a175db5", execEpoch:1336766742, execModify: new Date("Fri May 11 15:05:42 2012"), startTime: new Date("Thu May 31 15:59:39 2012"), numCores:"64", sizeT:{bss:"1881400168",text:"239574",data:"22504"}}, 

每条logging都在JSON文件的一行中,唯一的换行符在每条logging的末尾。 因此,文档中的每一行都以“{jobID:”开始……我试图使用以下命令将它们导入到mongo数据库中:

 mongoimport --db dbName --collection collectionName --file fileName.json 

但是,我得到以下错误:

 Sat Mar 2 01:26:12 Assertion: 10340:Failure parsing JSON string near: ,execModif 0x10059f12b 0x100562d5c 0x100562e9c 0x10025eb98 0x10000e643 0x100010b60 0x10055c4cc 0x1000014b7 0x100001454 0 mongoimport 0x000000010059f12b _ZN5mongo15printStackTraceERSo + 43 1 mongoimport 0x0000000100562d5c _ZN5mongo11msgassertedEiPKc + 204 2 mongoimport 0x0000000100562e9c _ZN5mongo11msgassertedEiRKSs + 12 3 mongoimport 0x000000010025eb98 _ZN5mongo8fromjsonEPKcPi + 1576 4 mongoimport 0x000000010000e643 _ZN6Import8parseRowEPSiRN5mongo7BSONObjERi + 2739 5 mongoimport 0x0000000100010b60 _ZN6Import3runEv + 7376 6 mongoimport 0x000000010055c4cc _ZN5mongo4Tool4mainEiPPc + 5436 7 mongoimport 0x00000001000014b7 main + 55 8 mongoimport 0x0000000100001454 start + 52 Sat Mar 2 01:26:12 exception:BSON representation of supplied JSON is too large: Failure parsing JSON string near: ,execModif Sat Mar 2 01:26:12 Sat Mar 2 01:26:12 imported 0 objects Sat Mar 2 01:26:12 ERROR: encountered 1941 errors 

我不知道是什么问题。 有人可以推荐一个解决scheme吗? 非常感谢您的时间!

我能够修复使用以下查询错误:

 mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray 

希望这对某人有帮助。

尝试这个,

 mongoimport --db dbName --collection collectionName <fileName.json 

例,

 mongoimport --db foo --collection myCollections < /Users/file.json connected to: *.*.*.* Sat Mar 2 15:01:08 imported 11 objects 

问题是因为你的date格式。

我用同样的JSON修改date如下,它的工作

 {jobID:"2597401", account:"XXXXX", user:"YYYYY", pkgT:{"pgi/7.2-5":{libA:["libpgc.so"],flavor:["default"]}}, startEpoch:"1338497979", runTime:"1022", execType:"user:binary", exec:"/share/home/01482/XXXXX/appker/ranger/NPB3.3.1/NPB3.3-MPI/bin/ft.D.64", numNodes:"4", sha1:"5a79879235aa31b6a46e73b43879428e2a175db5", execEpoch:1336766742, execModify:{"$date" : 1343779200000}, startTime:{"$date" : 1343779200000}, numCores:"64", sizeT:{bss:"1881400168",text:"239574",data:"22504"}} 

希望这可以帮助

安慰:

 mongoimport -d dbName -c collectionName dataFile.js 

我用下面的命令导出数据库

 mongodump --db database_name --collection collection_name 

下面的命令为我导入数据库工作

 mongorestore --db database_name path_to_bson_file 

你的语法在

 mongoimport --db dbName --collection collectionName --file fileName.json 

确保你在正确的文件夹或提供完整的path。

此命令在未指定收集的情况下起作用。

 mongoimport --db zips "\MongoDB 2.6 Standard\mongodb\zips.json" 

Mongo shell执行完命令后

 connected to: 127.0.0.1 no collection specified! using filename 'zips' as collection. 2014-09-16T13:56:07.147-0400 check 9 29353 2014-09-16T13:56:07.148-0400 imported 29353 objects 

如果您尝试导出此testing集合:

 > db.test.find() { "_id" : ObjectId("5131c2bbfcb94ddb2549d501"), "field" : "Sat Mar 02 2013 13:13:31 GMT+0400"} {"_id" : ObjectId("5131c2d8fcb94ddb2549d502"), "field" : ISODate("2012-05-31T11:59:39Z")} 

与mongoexport(用Date(...)创build的第一个date和用new Date(...)创build的第二个(如果使用ISODate(...)将与第二行相同))所以mongoexport输出会看起来像这样:

 { "_id" : { "$oid" : "5131c2bbfcb94ddb2549d501" }, "field" : "Sat Mar 02 2013 13:13:31 GMT+0400" } { "_id" : { "$oid" : "5131c2d8fcb94ddb2549d502" }, "field" : { "$date" : 1338465579000 } } 

所以你应该使用相同的符号,因为严格的JSON没有typesDate( <date> )

另外你的JSON是无效的:所有的字段名称必须用双引号引起来,但是没有它们,mongoimport可以正常工作。

您可以在mongodb 文档和这里find更多的信息。