Mongoimport pliku json

Mam plik json składający się z około 2000 rekordów. Każdy rekord, który będzie odpowiadał dokumentowi w bazie danych mongo, jest sformatowany w następujący sposób:

{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"}},

Każdy rekord znajduje się w jednej linii w pliku JSON, a jedyne podziały wierszy znajdują się na końcu każdego rekordu. Dlatego każda linia w dokumencie zaczyna się od "{jobID:"... Próbuję zaimportować je do bazy danych mongo za pomocą następującego polecenia:

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

Jednak dostaję następujące błąd:

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
Nie wiem, w czym problem. Czy ktoś może polecić rozwiązanie?
Author: KARTHIKEYAN.A, 2013-03-02

9 answers

Udało mi się naprawić błąd za pomocą następującego zapytania:

mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray
Mam nadzieję, że to komuś pomoże.
 193
Author: amber4478,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-05 21:40:18

Spróbuj tego,

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

Przykład,

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

Problem jest spowodowany przez format daty.

Użyłem tego samego JSONA ze zmodyfikowaną datą jak poniżej i zadziałało

{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"}}

Hope this helps

 37
Author: Srivatsa N,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-02 11:31:50

Konsola:

mongoimport -d dbName -c collectionName dataFile.js 
 16
Author: Andrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-16 00:49:21

Używając mongoimport możesz osiągnąć to samo

mongoimport --db test --collection user --drop --file ~/downloads/user.json

Gdzie,

test - Database name
user - collection name
user.json - dataset file

--drop jest drop the collection if already exist.

 10
Author: KARTHIKEYAN.A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-27 07:18:40

Użyłem poniższego polecenia do eksportu DB

mongodump --db database_name --collection collection_name

I pod komendą zadziałało mi zaimportowanie DB

mongorestore --db database_name path_to_bson_file
 2
Author: Ravi Hirani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-09 10:50:56

Twoja składnia wydaje się całkowicie poprawna w:

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

Upewnij się, że jesteś we właściwym folderze lub podaj pełną ścieżkę.

 2
Author: Robert Grutza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-25 06:33:50

To polecenie działa tam, gdzie nie podano kolekcji .

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

Powłoka Mongo po wykonaniu polecenia

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
 1
Author: Abhi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-16 17:59:52

Jeśli spróbujesz wyeksportować tę kolekcję testową:

> 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")}

Z mongoexport (pierwsza data utworzona za pomocą Date(...) i druga utworzona za pomocą new Date(...) (jeśli użycie {[4] } będzie takie samo jak w drugiej linii)) więc wyjście mongoexport będzie wyglądało następująco:

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

Więc powinieneś używać tej samej notacji, ponieważ strict JSON nie ma typu Date( <date> ).

Również Twój JSON nie jest poprawny: wszystkie nazwy pól muszą być zamknięte w podwójnych cudzysłowach, ale mongoimport działa dobrze bez oni.

Dodatkowe informacje można znaleźć w dokumentacji mongodb i tutaj .

 0
Author: Denis Nikanorov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-02 10:30:17

To powinno działać wewnątrz mongoshell

mongoimport -d databaseName -c collectionName --drop fileName.json

Jeśli nie uruchomiłeś powłoki w wymaganym katalogu, musisz podać plik wraz z jego ścieżką.

 -2
Author: Mahidhar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-24 15:07:02