Mongoimport файла json
у меня есть файл json, состоящий из около 2000 записей. Каждая запись, которая будет соответствовать документу в базе данных mongo, форматируется следующим образом:
{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"}},
каждая запись на отдельной строке в файле JSON, и только разрывы строк в конце каждой записи. Поэтому каждая строка в документе начинается с "{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
Я не знаю, в чем проблема. Может кто-нибудь порекомендовать решение?
9 ответов:
я смог исправить ошибку, используя следующий запрос:
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проблема из-за вас формат даты.
я использовал тот же JSON с измененной датой, как показано ниже, и он работал
{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 вы можете в состоянии достичь того же
mongoimport --db test --collection user --drop --file ~/downloads/user.jsonздесь
test - Database name user - collection name user.json - dataset file
--dropотбрасывает коллекцию, если она уже существует.
я использовал ниже команду для экспорта DB
mongodump --db database_name --collection collection_nameи ниже команда работала для меня, чтобы импортировать DB
mongorestore --db database_name path_to_bson_file
ваш синтаксис выглядит совершенно правильно:
mongoimport --db dbName --collection collectionName --file fileName.jsonубедитесь, что вы находитесь в правильной папке или укажите полный путь.
эта команда работает там, где не указан коллекции .
mongoimport --db zips "\MongoDB 2.6 Standard\mongodb\zips.json"оболочка Монго после выполнения команды
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
при попытке экспортировать эту тестовую коллекцию:
> 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(...)и второй, созданный сnew Date(...)(если использоватьISODate(...)будет такой же, как во второй строке)) так что выход mongoexport будет выглядеть так:{ "_id" : { "$oid" : "5131c2bbfcb94ddb2549d501" }, "field" : "Sat Mar 02 2013 13:13:31 GMT+0400" } { "_id" : { "$oid" : "5131c2d8fcb94ddb2549d502" }, "field" : { "$date" : 1338465579000 } }поэтому вы должны использовать ту же нотацию, потому что строгий JSON не имеет типа
Date( <date> ).также ваш JSON не действует: все имена полей должны быть заключены в двойные кавычки, но mongoimport прекрасно работает без них.
вы можете найти дополнительную информацию в MongoDB документация и здесь.
это должно работать внутри mongoshell
mongoimport -d databaseName -c collectionName --drop fileName.jsonЕсли вы не запустили оболочку в нужном каталоге, вы должны указать файл вместе с его путем.
Comments