webentwicklung-frage-antwort-db.com.de

Mongodb Mongoimport zu groß: Fehler beim Analysieren

Ich versuche in die MongoDB 70 MB Json-Datei zu importieren, die gültig ist. Aber ich bekomme diesen Fehler immer und immer wieder in einer Schleife:

 01 11:42:20 exception:BSON representation of supplied JSON is too large: Failure parsing JSON string near: "name": "L
 01 11:42:20
 01 11:42:20 Assertion: 10340:Failure parsing JSON string near: "link": "h
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 kernel32.dll       BaseThreadInitThunk+0x12
 01 11:42:20 ntdll.dll          RtlInitializeExceptionChain+0xef
 01 11:42:20 exception:BSON representation of supplied JSON is too large: Failure parsing JSON string near: "link": "h
 01 11:42:20
 01 11:42:20 Assertion: 10340:Failure parsing JSON string near: }
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 kernel32.dll       BaseThreadInitThunk+0x12
 01 11:42:20 ntdll.dll          RtlInitializeExceptionChain+0xef
 01 11:42:20 exception:BSON representation of supplied JSON is too large: Failure parsing JSON string near: }
 01 11:42:20
 01 11:42:20 Assertion: 10340:Failure parsing JSON string near: ],
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 mongoimport.exe    ???
 01 11:42:20 kernel32.dll       BaseThreadInitThunk+0x12
 01 11:42:20 ntdll.dll          RtlInitializeExceptionChain+0xef
 01 11:42:20 exception:BSON representation of supplied JSON is too large: Failure parsing JSON string near: ],

Mein JSON (nur ein kleines Beispiel davon) besteht aus vielen Strukturen wie dieser:

[ 
{
   "data": [
         "id": "xxxxxxxxxxxxxxxxxx",
         "from": {
            "name": "yyyyyyyyyyy",
            "id": "1111111111111"
         },
         "to": {
            "data": [
               {
                  "version": 1,
                  "name": "1111111111111",
                  "id": "1111111111111"
               }
            ]
         },
         "picture": "fffffffffffffffffffffff.jpg",
         "link": "http://www.youtube.com/watch?v=qqqqqqqqqqqqq",
         "source": "http://www.youtube.com/v/qqqqqqqqqqqqq?version=3&autohide=1&autoplay=1",
         "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
         "description": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...",
         "icon": "http://static.ak.fbcdn.net/rsrc.php/v2/xxx/r/dddd",
         "actions": [
            {
               "name": "Comment",
               "link": "http://www.example.com/1111111111111/posts/1111111111111"
            },
            {
               "name": "Like",
               "link": "http://www.example.com/1111111111111/posts/1111111111111"
            }
         ],
         "privacy": {
            "value": ""
         },
         "type": "video",
         "created_time": 1356953890,
         "updated_time": 1356953890,
         "likes": {
            "data": [
               {
                  "name": "jjj ",
                  "id": "59xxx67"
               },
               {
                  "name": "xxxxx",
                  "id": "79xxx27"
               }
            ],
            "count": 2
         },
         "comments": {
            "count": 0
         }
      },

....
....
....
}
]

dies ist das allgemeine Muster der Json ":

[
{
   "data": [
      {

      }
    ],
    "paging": {
      "previous": "link",
      "next": "link"
   }
},
   "data": [
      {
      }
    ],
    "paging": {
      "previous": "link",
      "next": "link"
   }
},
"data": [
      {
      }
    ],
    "paging": {
      "previous": "link",
      "next": "link"
   }
}
]
27
user63898

Anstelle von:

mongoimport -d DATABASE_NAME -c COLLECTION_NAME --file YOUR_JSON_FILE

verwenden Sie den folgenden Befehl:

mongoimport -d DATABASE_NAME -c COLLECTION_NAME --file YOUR_JSON_FILE --jsonArray
77
Rajkumar Singh

In meinem Fall war meine Datei eigentlich nicht zu groß, daher war die Fehlermeldung irreführend. Ich musste jedes Dokument entweder in eine einzige Zeile schreiben oder --jsonArray verwenden.

Also entweder die Datei ändern wie:

{ "_id" : "xxxxxxxx", "foo" : "yyy", "bar" : "zzz" }

oder ändern Sie den Importbefehl in

mongoimport -d [db_name] -c [col_name] --file [file_with_multi_lined_docs] --jsonArray

wenn meine Datei im mehrzeiligen Format pro Dokument bleibt

{
    "_id" : "xxxxxxxx", 
    "foo" : "yyy", 
    "bar" : "zzz" 
}
15
HaoQi Li

Enthält Ihre Json-Datei nur eine Liste von Datensätzen im Feld data? In diesem Fall müssen Sie Ihre Json-Datei als Liste von Datensätzen wie folgt neu formatieren:

     {
     "id": "xxxxxxxxxxxxxxxxxx",
     "from": {
        "name": "yyyyyyyyyyy",
        "id": "1111111111111"
     },
     "to": {
        "data": [
           {
              "version": 1,
              "name": "1111111111111",
              "id": "1111111111111"
           }
        ]
     },
     ......
     }
     {
     "id": "xxxxxxxxxxxxxxxxxx",
     "from": {
        "name": "yyyyyyyyyyy",
        "id": "1111111111111"
     },
     "to": {
        "data": [
           {
              "version": 1,
              "name": "1111111111111",
              "id": "1111111111111"
           }
        ]
     },
     ......
     }

Wenn Sie Ihre Json-Datei gut formatiert haben, reicht es aus, die ein paar Anfangs-/Endzeilen zu bearbeiten.

EDIT: Möglicherweise benötigen Sie die Option --jsonArray, um aus einer gültigen Json-Datei zu importieren. Versuchen 

mongoimport --db DATABASE_NAME --collection COLLECTION_NAME --file YOUR_JSON_FILE --jsonArray
5
Chunliang Lyu

In meinem Fall, als ich mit diesem Fehler konfrontiert wurde, stellte ich fest, dass das Problem darin bestand, die Daten von meinem lokalen Computer (in vim) auf meinen Remote-Server (ebenfalls vim) zu kopieren und einzufügen. Wenn ich scp 'd stattdessen stattdessen änderte, funktionierte es auf wundersame Weise, also keine Ahnung, was geändert wurde, als es kopiert wurde, vor allem, weil es von Mac nach Centos kopiert wurde.

Zusammenfassend: Verwenden Sie die Datei, die mongoexport erstellt, nicht deren Inhalt!

0
Matt Fletcher

Überprüfen Sie die Version von Mongo. Ich hatte das Problem, dass ich Json aus Mongo 2.6.1 exportierte und versuchte, einen Mongo ~ 2.4 zu importieren. Nach der Installation einer höheren Version funktionierte es für mich ...

0
mickey