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, ma następujący format:
{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 pojedynczym wierszu pliku JSON, a jedyne podziały wierszy znajdują się na końcu każdego rekordu. Dlatego każdy wiersz 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 pojawia się następujący 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?
json
mongodb
import
mongoimport
bursztyn 4478
źródło
źródło
--jsonArray
będąc biletem, tak?mongoimport -d <database> -c <collection> --jsonArray -f <filename>.json
.mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray -u ser -p password
authenticationDatabase
o którym mowa w odpowiedzi stackoverflow.com/a/58067928/6791222 .Spróbuj tego,
Przykład,
Problem jest spowodowany formatem daty.
Użyłem tego samego JSON z datą modyfikacji jak poniżej i zadziałało
mam nadzieję że to pomoże
źródło
""
wokół.json
, jeśli zawiera nazwę folderu zawiera spacje. Odpowiedział Abhi poniżej Na przykład To nie zadziała, musisz dodać""
do lokalizacji pliku json, aby go zaimportować.D:\>mongoimport --db testimport --collection small_zip < D:\Dev\test test\small_zips.json The system cannot find the file specified.
To działaD:\>mongoimport --db testimport --collection small_zip < "D:\Dev\test test\small_zips.json" 2016-04-17T18:32:34.328+0800 connected to: localhost 2016-04-17T18:32:34.610+0800 imported 200 documents
Korzystając z mongoimportu możesz osiągnąć to samo
gdzie,
--drop
jest porzuceniem kolekcji, jeśli już istnieje.źródło
konsola:
źródło
Użyłem poniższego polecenia do eksportu DB
a poniższe polecenie działało dla mnie, aby zaimportować DB
źródło
Twoja składnia jest całkowicie poprawna w:
Upewnij się, że jesteś we właściwym folderze lub podaj pełną ścieżkę.
źródło
Uruchom polecenie importu w innym terminalu. (nie wewnątrz skorupy mangusty).
źródło
W
cmd
systemie Windows możesz użyć polecenia Command Prompcmd , w Ubuntu możesz użyć swojegoterminal
, wpisując następujące polecenie:wtedy, kiedy otworzysz swoją powłokę mongo, zobaczysz, że sprawdzisz swoją nazwę_bazy_danych po uruchomieniu tego polecenia:
źródło
To polecenie działa, gdy nie określono kolekcji.
Powłoka Mongo po wykonaniu polecenia
źródło
Próbowałem czegoś takiego i faktycznie działa:
źródło
Działa to ze mną, gdy db z nazwą użytkownika i hasłem
db bez nazwy użytkownika hasło usuń
-u my_user -p my_pass
Mój przykładowy plik json
źródło
Rozwiązanie:-
Przykład:-
Umieść plik w folderze administratora: -
Uruchom to polecenie na swoim teminalu: -
Wynik:-
Więcej linku
źródło
mongoimport --jsonArray --db nazwa_db - kolekcja nazwa_kolekcji - ścieżka do pliku
przykład mongoimport --jsonArray --db learnmongo --collection person --file C: \ people.json
źródło
Jeśli spróbujesz wyeksportować tę kolekcję testową:
z mongoexport (pierwsza data utworzona za pomocą,
Date(...)
a druga utworzona za pomocąnew Date(...)
(jeśliISODate(...)
zostanie użyta będzie taka sama jak w drugiej linii)), więc wynik mongoexport będzie wyglądał następująco:Powinieneś więc użyć tej samej notacji, ponieważ ścisły JSON nie ma typu
Date( <date> )
.Również twój JSON jest nieprawidłowy: wszystkie nazwy pól muszą być zawarte w podwójnych cudzysłowach, ale mongoimport działa bez nich.
Dodatkowe informacje można znaleźć w dokumentacji mongodb oraz tutaj .
źródło
sizeT:{data: "1949..."}}
Trochę za późno na prawdopodobną odpowiedź, może pomóc nowym ludziom. W przypadku, gdy masz wiele instancji bazy danych:
Zakładając, że potrzebne są poświadczenia, w przeciwnym razie usuń tę opcję.
źródło
Podano liczbę odpowiedzi, mimo że chciałbym wydać swoje polecenie. Często. To może komuś pomóc.
źródło