Wie kann ich mit Python den bsondump von MongoDB in JSON umwandeln?

So, ich habe eine enorme Menge .bson aus einer MongoDB-dump. Ich bin mit bsondump auf der Befehlszeile umleiten der Ausgabe als stdin zu python. Diese erfolgreich konvertiert von BSON 'JSON', aber es ist in der Tat ein string, und scheinbar nicht legal JSON.

Beispielsweise eine eingehende Zeile sieht wie folgt aus:

{ "_id" : ObjectId( "4d9b642b832a4c4fb2000000" ),
  "acted_at" : Date( 1302014955933 ),
  "created_at" : Date( 1302014955933 ),
  "updated_at" : Date( 1302014955933 ),
  "_platform_id" : 3,
  "guid" : 72106535190265857 }

Die ich glauben, ist Mongo Erweiterte JSON.

Wenn ich lese in einer Zeile und tun:

json_line = json.dumps(line)

Bekomme ich:

"{ \"_id\" : ObjectId( \"4d9b642b832a4c4fb2000000\" ),
\"acted_at\" : Date( 1302014955933 ),
\"created_at\" : Date( 1302014955933 ),
\"updated_at\" : Date( 1302014955933 ),
\"_platform_id\" : 3,
\"guid\" : 72106535190265857 }\n"

Ist noch <type 'str'>.

Habe ich auch schon versucht

json_line = json.dumps(line, default=json_util.default)

(siehe pymongo json_util - spam-Erkennung verhindert, dass ein Dritter link )
Das scheint die Ausgabe die gleiche wie Bohnenstroh oben. Lasten gibt einen Fehler:

json_line = json.loads(line, object_hook=json_util.object_hook)
ValueError: No JSON object could be decoded

So, wie kann ich mich verwandeln den string von TenGen JSON in parseable JSON?
(das Endziel ist stream tab-getrennte Daten in eine andere Datenbank)

InformationsquelleAutor der Frage Peter Nachbaur | 2012-08-08

Schreibe einen Kommentar