Ich habe eine 300 mb CSV mit 3 Millionen Zeilen im Wert von Stadtinformationen von Geonames.org. Ich versuche, diese CSV in JSON zu konvertieren, um mit Mongoimport in MongoDB zu importieren. Der Grund, warum ich JSON möchte, ist, dass ich das Feld "loc" als Array und nicht als String für den Geospatial-Index angeben kann. Die CSV ist in UTF-8 codiert.Convert CSV in Mongoimport-freundliche JSON mit Python
Ein Ausschnitt meiner CSV sieht wie folgt aus:
"geonameid","name","asciiname","alternatenames","loc","feature_class","feature_code","country_code","cc2","admin1_code","admin2_code","admin3_code","admin4_code"
3,"Zamīn Sūkhteh","Zamin Sukhteh","Zamin Sukhteh,Zamīn Sūkhteh","[48.91667,32.48333]","P","PPL","IR",,"15",,,
5,"Yekāhī","Yekahi","Yekahi,Yekāhī","[48.9,32.5]","P","PPL","IR",,"15",,,
7,"Tarvīḩ ‘Adāī","Tarvih `Adai","Tarvih `Adai,Tarvīḩ ‘Adāī","[48.2,32.1]","P","PPL","IR",,"15",,,
Die gewünschte JSON-Ausgang (mit Ausnahme des charset), die mit mongoimport arbeitet unten:
{"geonameid":3,"name":"Zamin Sukhteh","asciiname":"Zamin Sukhteh","alternatenames":"Zamin Sukhteh,Zamin Sukhteh","loc":[48.91667,32.48333] ,"feature_class":"P","feature_code":"PPL","country_code":"IR","cc2":null,"admin1_code":15,"admin2_code":null,"admin3_code":null,"admin4_code":null}
{"geonameid":5,"name":"Yekahi","asciiname":"Yekahi","alternatenames":"Yekahi,Yekahi","loc":[48.9,32.5] ,"feature_class":"P","feature_code":"PPL","country_code":"IR","cc2":null,"admin1_code":15,"admin2_code":null,"admin3_code":null,"admin4_code":null}
{"geonameid":7,"name":"Tarvi? ‘Adai","asciiname":"Tarvih `Adai","alternatenames":"Tarvih `Adai,Tarvi? ‘Adai","loc":[48.2,32.1] ,"feature_class":"P","feature_code":"PPL","country_code":"IR","cc2":null,"admin1_code":15,"admin2_code":null,"admin3_code":null,"admin4_code":null}
Ich habe versucht, alle verfügbaren Online-CSV -JSON-Konverter und sie funktionieren nicht wegen der Dateigröße. Der nächste, den ich bekam, war mit Mr Data Converter (der oben abgebildete), der nach dem Entfernen der Anfangs- und Endklammer und Kommas zwischen Dokumenten in MongoDb importieren würde. Leider funktioniert dieses Tool nicht mit einer 300 MB Datei.
Der obige JSON ist so eingestellt, dass er in UTF-8 kodiert ist, aber immer noch Zeichensatzprobleme hat, wahrscheinlich aufgrund eines Konvertierungsfehlers?
Ich verbrachte die letzten drei Tage damit, Python zu lernen, Python-CSVKIT zu verwenden, alle CSV-JSON-Skripts auf Stackoverflow zu testen, CSV in MongoDB zu importieren und "loc" -String in Array zu ändern (dabei werden die Anführungszeichen leider beibehalten) sogar versucht, manuell 30.000 Datensätze gleichzeitig zu kopieren und einzufügen. Viel Reverse Engineering, Versuch und Irrtum und so weiter.
Hat jemand eine Ahnung, wie man das JSON oben erreicht, während man die Kodierung wie in der CSV oben behält? Ich bin vollkommen still.
möglich Duplikate mit: http://stackoverflow.com/questions/1884395/csv-to-json-script – xiaoyi
Meine Frage ist in Bezug auf die Formatierung und keine Fehlermeldungen. Ich bekomme keine Fehler, aber weder die gewünschte Ausgabe. – Karl
Diese Frage ist kein Duplikat: Es gibt sowohl Codierungsprobleme als auch spezielle Ausgabeformatanforderungen, die in der anderen oben genannten Frage nicht vorhanden sind. – Petri